本人刚学VC++问个关于在窗口显示一副位图的问题。
麻烦大家给我讲讲CreateCompatibleDC()CreateCompatibleBitmapSelectObject()BitBlt()这几个函数之间的逻辑关系,...
麻烦大家给我讲讲
CreateCompatibleDC()
CreateCompatibleBitmap
SelectObject()
BitBlt()
这几个函数之间的逻辑关系,各实现什么功能,不用太详细,关键理清他们之间的关系,最后给个结论 到底哪一个才是显示位图的最终函数?谢谢啊,本人菜鸟,研究了很久MSDN结果头都大了还是没理清个头绪出来!
哪一个参数是决定位图贴出来在窗口的哪一个位置?谢谢 展开
CreateCompatibleDC()
CreateCompatibleBitmap
SelectObject()
BitBlt()
这几个函数之间的逻辑关系,各实现什么功能,不用太详细,关键理清他们之间的关系,最后给个结论 到底哪一个才是显示位图的最终函数?谢谢啊,本人菜鸟,研究了很久MSDN结果头都大了还是没理清个头绪出来!
哪一个参数是决定位图贴出来在窗口的哪一个位置?谢谢 展开
3个回答
展开全部
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 );
前两个参数决定贴出来的位图在窗口中左上角的坐标
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进行显示
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()将图先是在屏幕上就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询