c语言中实现自动平移,c语言实现图像的旋转与平移

y

y

y

(4) ty≥height,图象完全移出了屏幕,不用做任何处理。

这种做法利用了位图存储的连续性,即同一行的象素在内存中是相邻的。利用 memcpy函数, 从(x ,y )-x )处,拷 0 0 点开始,一次可以拷贝一整行(宽度为 x1 0 ,然后将内存指针移到(x ,y +1)0 0 贝下一行。这样拷贝(y -y )1 0 行就完成了全部操作,避免了一个一个象素的计算,提高了效率。 Translation的源代码如下: int xOffset=0,yOffset=0; BOOL Translation(HWND hWnd) {

DLGPROC DWORD

dlgInputBox = NULL; OffBits,BufSize;

LPBITMAPINFOHEADER lpImgData; LPSTR HLOCAL

lpPtr;

hTempImgData;

LPBITMAPINFOHEADER lpTempImgData; LPSTR int int int BOOL HDC HFILE int

lpTempPtr;

SrcX0,SrcY0,SrcX1,SrcY1; DstX0,DstY0,DstX1,DstY1; RectWidth,RectHeight; xVisible,yVisible; hDc; hf; i;

//出现对话框,输入 x偏移量 xOffset,和 y偏移量 yOffset

dlgInputBox = (DLGPROC) MakeProcInstance ( (FARPROC)InputBox,ghInst ); DialogBox (ghInst, \FreeProcInstance ( (FARPROC) dlgInputBox );

//OffBits为 BITMAPINFOHEADER结构长度加调色板的大小 OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER);

BufSize=OffBits+bi.biHeight*LineBytes;//要开的缓冲区的大小 //为新产生的位图分配缓冲区内存

if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL) {

MessageBox(hWnd,\MB_ICONEXCLAMATION); return FALSE; //失败,返回 }

//lpImgData为指向原来位图数据的指针

lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData); //lpTempImgData为指向新产生位图数据的指针

lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData); lpPtr=(char *)lpImgData;

lpTempPtr=(char *)lpTempImgData;

//将新的缓冲区中的每个字节都填成 255,这样以后未处理的象素就是白色 memset(lpTempPtr,(BYTE)255,BufSize);

//两幅图之间的头信息,包括调色板都是相同的,所以直接拷贝头和调色板 memcpy(lpTempPtr,lpPtr,OffBits);

//xVisible为 FALSE时,表示 x方向已经移出了可显示的范围 xVisible=TRUE; if( xOffset<= -bi.biWidth ) xVisible=FALSE; else if( xOffset<=0){

DstX0=0; //表示移动后,有图区域的左上角点的 x坐标

DstX1=bi.biWidth+xOffset; //表示移动后,有图区域的右下角点的 x坐标 }

else if ( xOffsetxVisible=FALSE;

SrcX0=DstX0-xOffset; //对应 DstX0在原图中的 x坐标 SrcX1=DstX1-xOffset; //对应 DstX1在原图中的 x坐标 RectWidth=DstX1-DstX0; //有图区域的宽度

//yVisible为 FALSE时,表示 y方向已经移出了可显示的范围 yVisible=TRUE;

if( yOffset<= -bi.biHeight ) yVisible=FALSE; else if( yOffset<=0){

DstY0=0; //表示移动后,有图区域的左上角点的 y坐标

DstY1=bi.biHeight+yOffset; //表示移动后,有图区域的右下角点的 y坐标 }

else if ( yOffset} else

yVisible=FALSE;

SrcY0=DstY0-yOffset; //对应 DstY0在原图中的 y坐标 SrcY1=DstY1-yOffset; //对应 DstY1在原图中的 y坐标 RectHeight=DstY1-DstY0; //有图区域的高度

if( xVisible && yVisible){ //x,y方向都没有完全移出可显示的范围 for(i=0;i//lpPtr指向要拷贝的那一行的最左边的象素对应在原图中的位 //置。特别要注意的是,由于.bmp是上下颠倒的,偏移是 //(BufSize-LineBytes-(i+SrcY0)*LineBytes)+SrcX0,而不是 //(i+SrcY0)*LineBytes)+SrcX0,你试着举个例子就明白了。 lpPtr=(char*)lpImgData+(BufSize-LineBytes- (i+SrcY0)*LineBytes)+SrcX0;

//lpTempPtr指向要拷贝的那一行的最左边的象素对应在新图中//的位置。同样要注意上面// 的问题。

lpTempPtr=(char*)lpTempImgData+

(BufSize-LineBytes-(i+DstY0)*LineBytes)+DstX0; //拷贝一行(宽度为 RectWidth)

memcpy(lpTempPtr,lpPtr,RectWidth);

} }

以上是由77cn范文大全为大家整理的c语言实现图像的旋转与平移的相关范文,本文关键词为语言,实现,图像,旋转,平移,实验,图象,几何,变换,参考资,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。

c语言实现图像的旋转与平移.doc

免费范文网为全国范文类知名网站,下载全文稍作修改便可使用,即刻完成写稿任务。

已有11人下载

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库c语言实现图像的旋转与平移在线全文阅读。

本文来自:免费范文网(www.77cn.com.cn) 转载请注明出处!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言编写电子秒表程序,电子秒表C程序.doc

电子秒表C程序电子秒表程序#include#include#define uchar unsigned char#define uint unsigned intuchar code segtab[]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x8c,0xff};uchar dbuf[3]{0,0,0};uint count;uchar sec;uchar…

c语言星空程序,C语言实现动态星空

1、/ 编译环境&#xff1a;Visual C 6.0&#xff0c;EasyX 2014冬至版/ e a s y x . c n/#include #include #include #define MAXSTAR 200/ 星星总数struct STARdoublex;inty;doublestep;intcolor;STAR starMAXSTAR;/ 初始化星星void InitStar(int i)stari.x 0;stari.y rand…

c语言stanf,stanf

1、很多问题的答案只能是“是”或“否”&#xff0c;但很多人总是通过说“我不告诉你”或者“我不知道”来逃避。2、假的事情总是显得过于巧合&#xff0c;过于圆满&#xff0c;以至于最后被揭穿。生活中的事情要都那么完美就不会有那么多人不快乐了。3、“肯定”表示有90&…

c语言循环数组赋值,for循环里边给数组赋值的难题

[Quote]/* E5.4 */#include int main(void){double data[12][5];int i0; //总共有多少个数字double row2.0; //初始数字for(i0;i<11;i){data[i][0]row;printf(“\n%d\t%.2f”,i,data[i][0]);rowrow0.1;}return 0;}[/QUOTE]我是C的初学者&#xff0c;这个程序本身没有问题&…

用c语言 c 做8位数奇校验,计算机硬件技术基础网上作业及答案

第一章概述1&#xff0e;下列叙述错误的是()A&#xff0e;目前大多数计算机结构仍属冯诺依曼结构B&#xff0e;计算机的工作原理基于“程序存储和控制”C&#xff0e;计算机的速度取决于CPU的主频&#xff0c;主频高的CPU速度快D&#xff0e;计算机系统包括硬件、软件两部分2&a…

c语言元素插入数组并排序,一数组按顺序序存放,插入一个数,按原来排序规律放在相应位置...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼前面已经有一道类似的题目为这道题做铺垫&#xff0c;我已经做出来啦。前面的题目是这样的&#xff1a;用选择法对10个数进行排序。我的做法&#xff0c;就是一个个对比扫描&#xff0c;从左到右递增。代码如下&#xff1a;#includ…

linux mpeg-4,嵌入式MPEG-4解码系统的设计与实现,嵌入式MPEG-4解码系统,嵌入式Linux,视频码流,P...

介绍了一种嵌入式高图像质量的MPEC-4视频流解码系统。该系统以嵌入式Linux作为操作系统&#xff0c;采用硬解码方式&#xff0c;把IDE接口设备或网络端口输入的MPEC-4视频码流(ES、PS和TS)转换成PAL&#xff0f;NTSC制式的电视信号输出。重点讨论了系统控制和MPEG-4解码部分的设…

android 手机壁纸源码,Android工程实现换壁纸功能【附源码】

最近工作要实现换壁纸小功能,将代码做成demo发出来没有采用zip格式换肤,因为只是更换一张图片背景1.将三张图放入drawable-hdpi,我放的是480*800的2.用sharedPreference存取皮肤的id,以便于下次启动的时候根据id来选择用哪个皮肤,在onresume()里刷新皮肤3.存到sharedPreference…

android webview 加载本地,webview加载本地资源的各种尝试

1.webview 打开sd卡上的静态html文件 &#xff0c;js文件既然放在assets文件夹下能找到&#xff0c;那能通过放在sd卡&#xff0c;能加载吗&#xff1f;答&#xff1a;事实证明&#xff0c;是没有用的。2.既然能拿到html的数据&#xff0c;那我们是不是重写html的script的tag的…

android 遍历sdcard,Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法...

本文实例讲述了Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;private void CopyAssets(String assetDir, String dir) {String[] files;try {// 获得Assets一共有几多文件files this.getResourc…

apple手表android手机,Apple Watch 4发布了,安卓手机用户如何选择呢?

Apple Watch 4发布了&#xff0c;安卓手机用户如何选择呢&#xff1f;2018年09月13日 17:40作者&#xff1a;黄页编辑&#xff1a;黄页分享一年一度的“科技界春晚”苹果新品发布在今天凌晨举行。苹果带来了新一代的智能手表——Apple Watch Series 4系列。作为“课代表”,科技…

android投屏到电视机,华为手机如何投屏到电视机上?按步骤,1分钟搞定手机投屏电视机...

现在&#xff0c;越来越多的人开始用上了华为手机&#xff0c;几乎人手一台。在平时学习、工作中&#xff0c;我也经常使用华为手机来处理、完成很多事项、任务&#xff0c;例如把手机投屏到电视机上。除了满足学习、工作需求&#xff0c;我也经常把手机投屏电视来看视频、玩游…

html语言可以干什么,JavaScript语言能做什么?

JavaScript是除了HTML和CSS之外&#xff0c;万维网的核心技术之一。JavaScript支持交互式web页面&#xff0c;是web应用程序的重要组成部分。绝大多数网站都使用它&#xff0c;主要的网络浏览器都有专门的JavaScript引擎来执行它。JavaScript(简称“JS”) 是一种具有函数优先的…

html获取当前二级域名,列举某域名下所有二级域名的方法总结

鬼仔注&#xff1a;本文为总结文&#xff0c;转载请注明来源( http://huaidan.org )这里介绍三种列举某域名下所有二级域名的方法&#xff0c;有知道其他方法的请到 http://huaidan.org/archives/1088.html 留言进行补充~谢谢。1、命令行下列举此方法好像是hoky很久以前写的&am…

html 文本溢出,确定HTML元素的内容是否溢出

通常情况下&#xff0c;你可以比较client[Height|Width]使用scroll[Height|Width]&#xff0c;以检测这种...但值是相同的&#xff0c;当溢出是可见的。因此&#xff0c;检测例程必须考虑到这一点&#xff1a;// Determines if the passed element is overflowing its bounds,/…

html调用父页面的函数,javascript – 如何从子窗口jquery调用父窗口函数?

我只需要在用户关注子窗口时调用父窗口中的函数.我在父窗口中有这个代码,function CallParent(){alert(" Parent window Alert");}Click here to open the child window和贝娄代码在我的孩子的窗口,jQuery(document).ready(function(){window.opener.CallParent();})…

html5绘制矩形动画,HTML5下绘制矩形教程

绘制矩形上一节&#xff0c;我们使用lineto()方法绘制一个封闭的矩形。其实&#xff0c;canvas的api提供了rect()方法可以绘制矩形。rect()方法是路径方法&#xff0c;它会把指定的矩形添加到当前路径的子路径中。它只添加路径&#xff0c;绘制图形还是由stroke()或fill()方法完…

html免费天气预报代码,免费自我定制天气预报代码

免费自我定制天气预报代码(2010-06-15 22:03:35)标签&#xff1a;昔阳天气预报一乌海天气预报一杂谈今晚蚊子又发现一个天气预报,在别人博客上看见的,昔阳天气预报一周,觉得还不错,查看了一下源代码,把怎么弄的方法告诉大家,南靖天气预报一周,其实没什么技术含量,很简单的,就是…

html5伪类触发机制,HTML5表单验证

validity属性表单元素对象具有此属性&#xff0c;返回值是一个ValidityState对象。ValidityState对象的名称是合成词&#xff0c;如有两个单词构成&#xff1a;(1).validity&#xff1a;翻译成汉语具有"验证"的意思。(2).state&#xff1a;翻译成汉语具有"状态&…

计算机管理中看不到本地用户,win7系统计算机管理中没有本地用户和组的解决方法...

很多小伙伴都遇到过win7系统计算机管理中没有本地用户和组的困惑吧&#xff0c;一些朋友看过网上零散的win7系统计算机管理中没有本地用户和组的处理方法&#xff0c;并没有完完全全明白win7系统计算机管理中没有本地用户和组是如何解决的&#xff0c;今天小编准备了简单的解决…