欢迎来到天天文库
浏览记录
ID:41037397
大小:42.00 KB
页数:7页
时间:2019-08-14
《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中所要复制区域的左上角
此文档下载收益归作者所有