windows sdk编程系列文章21 ---- 位图

windows sdk编程系列文章21 ---- 位图

ID:41037397

大小:42.00 KB

页数:7页

时间:2019-08-14

windows sdk编程系列文章21 ---- 位图_第1页
windows sdk编程系列文章21 ---- 位图_第2页
windows sdk编程系列文章21 ---- 位图_第3页
windows sdk编程系列文章21 ---- 位图_第4页
windows sdk编程系列文章21 ---- 位图_第5页
资源描述:

《windows sdk编程系列文章21 ---- 位图》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、windowssdk编程系列文章----位图2008-04-2321:34为微软windows操作系统编写的应用程序可以使用两种图像工具来存储图像:元文件和位图,在这一课,我们将学习怎样在程序中使用位图,更准确地说,我们要学习的是怎样在一个窗口的客户区显示位图。理论:位图就是存贮于电脑中的图片。位图文件有相当多的格式(如.BMP.JPG.GIF.PIC等)但Windows仅支持WindowsBitmapGraphics格式,即BMP文件。本课所指的位图也是BMP文件。使用位图最简单的方法就是把它定义在资源文件(.rc)中。定义的方法有两种。第一种方法是把它定义为整数宏,具体如下:#d

2、efineIDB_MYBITMAP  100IDB_MYBITMAPBITMAP"c:projectexample.bmp"第一行我们定义了一个值为100的整数宏。第二行我们把这个整数宏指向所要定义的位图,这样,编译器就能知道位图所在的路径。另一种方法是给它起一个名字,也就是把它定义为字符串,具体如下:MyBitMapBITMAP"c:projectexample.bmp"两种方法效果是一样的。选择哪一种方法,视乎在程序中你喜欢用整数宏还是用字符串来指向位图。现在我们已经把位图定义在资源文件中,下一步就是把它显示在窗口的客户区上。在程序中,我们使用API函数LoadBitma

3、p取得位图句柄。下面是LoadBitmap函数的原型:HBITMAPLoadBitmap(HINSTANCEhInstance,LPCTSTRlpBitmapName);该函数返回一个位图句柄。函数有两个参数,其中hInstance是程序句柄。lpBitmapName是位图名字的指针(适用于第二种定义方法)。如果你使用了第一种定义方法,你可以填入指向位图的值或整数宏(对应上例这个值就是100,整数宏是IDB_MYBITMAP)。获得一个设备文本(DC)句柄。你可以在响应WM_PAINT消息时通过API函数BeginPaint获得。如果在其它消息中则可以用API函数GetDC获得。创建

4、这个DC的内存映像。这样做的目的是建立一张“隐藏的画纸”,把位图“画”在上面,作缓冲之用。完成这项工作后,我们就通过一个函数把“画纸”上的位图复制到真正的DC中。这就是在屏幕上快速显示图象的双缓冲技术。(译者:可以减少图象抖动)这张“画纸”用API函数CreateCompatibleDC建立,下面是它的完型:HDCCreateCompatibleDC(HDChdc);如果函数执行成功,将返回DC内存映像也即“画纸”的句柄。现在我们已经有了“画纸”,可以把位图画在上面了。这可以通过API函数SelectObject完成,其中第一个参数是“画纸”的句柄,第二个参数则是位图的句柄,下面是函

5、数的完型:HGDIOBJSelectObject(HDChdc,HGDIOBJhgdiobj);现在位图已经画在“画纸”上了。下一步我们要把位图复制到真正的DC中。有很多API函数都能完成这项工作,例如BitBlt和StretchBlt。函数BitBlt仅仅将一个DC的内容简单地复制到另一个DC中,而函数StretchBlt则能够自动调整源DC复制内容的大小已适应目的DC的输出区域大小,因此前者比后者速度更快。在这里我们只使用函数BitBlt,下面是它的完型:BOOLBitBlt(HDChdcDest,//handletodestinationDC             intnX

6、Dest,//x-coordofdestinationupper-leftcorner             intnYDest,//y-coordofdestinationupper-leftcorner             intnWidth,//widthofdestinationrectangle             intnHeight,//heightofdestinationrectangle             HDChdcSrc,//handletosourceDC             intnXSrc,//x-coordinateofsource

7、upper-leftcorner             intnYSrc,//y-coordinateofsourceupper-leftcorner             DWORDdwRop//rasteroperationcode);hdcDest目的DC的句柄。nxDest,nyDest目的DC输出区域的左上角坐标。nWidth,nHeight目的DC输出区域的长和宽。hdcSrc源DC的句柄。nxSrc,nySrc源DC中所要复制区域的左上角

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。