标题:窗体绘图问题求解
取消只看楼主
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
结帖率:100%
已结贴  问题点数:20 回复次数:6 
窗体绘图问题求解
HDC hDC;
HDC dcMem;//在内存中建立绘图设备
HBITMAP bmpTemp;//建立位图句柄
hDC=GetDC(hFrame);
dcMem=CreateCompatibleDC(hDC);//建立与绘图控件兼容的内存绘图设备
bmpTemp=(HBITMAP)LoadImage(NULL,".\\images\\margin.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);//载入一幅位图
//GetObject(bmpTemp,sizeof(BITMAP),&bk);
SelectObject(dcMem,bmpTemp);//让内存中的绘图设备选定用于绘图的位图
StretchBlt(hDC,0,0,610,530,dcMem,0,0,502,401,SRCCOPY);//内存中的图片复制到控件上
DeleteDC(dcMem);DeleteObject(bmpTemp);
ReleaseDC(hwnd,hDC);

以上绘图过程经测试可行。但随即出现了一个问题,我现在不再希望把一幅位图整体显示到控件上,是想把多幅小的位图同时分别显示在控件上的不同位置。我不希望把这些位图逐一直接blt到控件上,我想先把它们全部blt到一个内存绘图设备上,再一次性blt给控件。我试过由一个源内存设备stretchblt到另一个目标内存设备,但没有成功,stretchblt给我返了0.
请问各路英雄有没有什么好的办法?谢了先
搜索更多相关主题的帖子: images 图片 
2015-06-12 21:02
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
内存绘图很有用,有用得蛋疼
2015-06-13 18:17
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
呵呵,没有拼图游戏那么复杂。是想做推箱子。墙、箱子、人各自用小的位图显示,现在想把它们blt到地图当中遇到了瓶颈,实在找不到办法的话还是只有不采用这种缓冲了,直接blt到控件上。
不过还是再问问看,能在内存中缓冲一下更好。
2015-06-14 10:41
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
找API当然是正途,关键是不知道按什么条件去搜。
2015-06-14 10:42
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
用GetConsoleWindow写了#define _WIN32_WINNT 0x0501还是undeclared

HWND hwnd = ::GetDesktopWindow();
HDC hdc = ::GetWindowDC( hwnd );
这个可以得到正常结果。
但是我想问一下,想用程序窗体的子窗口,应该怎样获得其hDC呢,我用GetDC没能画出来。
谢谢
2015-06-16 17:00
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
回复 10楼 wmf2014
如果用GetDesktopWindow,屏幕右上角可看到图形。它直接绘在了桌面的左上角
2015-06-16 17:45
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
回复 8楼 rjsp
唉,最终解决了,我用成了GetDC()所以没成功,原来是要用GetWindowDC()才成。谢谢你的帮助。
2015-06-16 18:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-446539-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.315102 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved