本人刚学VC++问个关于在窗口显示一副位图的问题。

来源:百度知道 编辑:UC知道 时间:2024/05/27 18:58:56
麻烦大家给我讲讲
CreateCompatibleDC()
CreateCompatibleBitmap
SelectObject()
BitBlt()
这几个函数之间的逻辑关系,各实现什么功能,不用太详细,关键理清他们之间的关系,最后给个结论 到底哪一个才是显示位图的最终函数?谢谢啊,本人菜鸟,研究了很久MSDN结果头都大了还是没理清个头绪出来!
哪一个参数是决定位图贴出来在窗口的哪一个位置?谢谢

CreateCompatibleDC()在内存中创建一个兼容DC
CreateCompatibleBitmap()创建一幅与兼容DC关联的位图
SelectObject()将位图选入兼容DC中
BitBlt()将位图显示出来

最后一个函数是最终显示位图的函数

BOOL BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop );
前两个参数决定贴出来的位图在窗口中左上角的坐标

CPaintDC dc(this); //获取当前显示DC

CDC* mdc = new CDC;
mdc->CreateCompatibleDC(&dc); //创建与显示DC兼容的内存DC
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc, width, height); //创建一个与显示DC兼容的位图
bitmap.Attach(hbitmap); //把位图附加到CBitmap对象
mdc->SelectObject(&bitmap); //选取位图,也可以选取其他的GDI对象,进行画图
dc.BitBlt(0, 0, rect.Width(), rect.Height(), mdc, 0, 0, SRCCOPY); //把位图由内存DC拷贝到现实DC进行显示

最终是BitBlt()来显示,CreateCompatibleDC()建立适当的设备环境(显示位图的设备,可理解为显示屏),SelectObject()将位图选入设备中。此时,用BitBlt()将图先是在屏幕上就行了。