位图编程
Windows系统使用的位图常分为设备相关位图(DDB)和设备无关位图(DIB)两种。其中DDB依赖于具体的图像输出设备,其颜色模式必须与输出设备相一致。DDB位图的显示很简单,其内部用一个Bitmap结构表示,其中包含了位图的宽度、高度、每像素的位数和设备相关的每像素的颜色等信息,将文件内容拷贝到内存中,然后可以很方便地将它粘贴到相关设备中,用BitBlt函数直接显示。但它只能存在与视频内存或系统内存中,且与输出设备紧密相关,因此程序员不会把DDB图像存储成文件,而是更多的使用DIB。
位图的显示顺序
1。创建位图对象,并通过该对象加载和设置位图内容,
2。创建于当前设备环境兼容的内存设备环境,并将位图选入该内存设备环境中,
3。该内存设备环境中的位图复制到当前的设备环境中,从而在当前窗口显示该位图。
.创建位图对象:可以先利用CBitmap类构造一个位图对象。通过CBitmap对象在首次被实例化时时空的。要使该对象有效,CBitmap类所包装的位图必须先创建。该类用于创建位图的成员函数有CreateBitmap()、CreateBitmapIndirect()和CreaeteComapatbleBitmap()等。
第二步就是加载和设置位图内容。通过开辟一个缓冲区(内存)中,完成后使用SetBitmapBits()函数将内存缓冲区的内容复制到位图上。
当创建完一个有效的位图对象后,就可以采用CDC类的成员函数BitBlt()把它显示在屏幕上。BitBlt()函数的功能就是把源设备环境的位图复制到目标设备中。也就是说,在设备之间进行复制之前,必须创建一个用于位图的设备环境,并且在进行复制前还要把位图选入设备环境中。
使用CBitmap类就消除闪烁。
CImage是MFC和ATL共享的新类,它能从外部磁盘中调入一个JPEG、GIF、BMP和PNG格式的图像文件加以显示。而且这些文件格式可以相互装换。