新手问题:关于CBitmap,请问如何在内存中开一个bitmap,又如何向该bitmap中写入一些图形,并且显示在屏幕上? 请问如何在内存中开一个bitmap,又如何向该bitmap中写入一些图形,并且显示在屏幕上?其后又如何重复此操作对于屏幕上的显示内容进行更新? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 见2004经验总结3、如何实现双缓冲 首先给出实现的程序,然后再解释,同样是在OnDraw(CDC *pDC)中:CDC MemDC; //首先定义一个显示设备对象CBitmap MemBitmap;//定义一个位图对象//随后建立与屏幕显示兼容的内存显示设备MemDC.CreateCompatibleDC(NULL);//这时还不能绘图,因为没有地方画 ^_^//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);//将位图选入到内存显示设备中//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);//先用背景色将位图清除干净,这里我用的是白色作为背景//你也可以用自己应该用的颜色MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));//绘图MemDC.MoveTo(……);MemDC.LineTo(……);//将内存中的图拷贝到屏幕上进行显示pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);//绘图完成后的清理MemBitmap.DeleteObject();MemDC.DeleteDC();上面的注释应该很详尽了,废话就不多说了。 多谢 x0554(雨寒)!!!感谢 happyparrot(快乐鹦鹉)的关注!!ocean1 WSARecv接收数据的问题? 慎用ATL::CString,慎用全局变量,不然都不知道怎么死的 FTP分配用户名密码的问题 创建动态菜单的问题 求RGB24转化为RGB16的算法或程序,要求转化后的图象显示清晰! 请问如何改变AfxMessageBox对话框的初始位置? 如何在onok()后释放内存? 那位类似windows资源管理器似的控件?100分 C++ Builder和VC++的问题? 请高手来杀鸡用牛刀!!!分不够,以后加 控件底色为何变成黑色的了 如何枚举所有窗口?能捕获隐藏窗口的句柄吗?
首先给出实现的程序,然后再解释,同样是在OnDraw(CDC *pDC)中:
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
//这时还不能绘图,因为没有地方画 ^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
//绘图
MemDC.MoveTo(……);
MemDC.LineTo(……);
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
上面的注释应该很详尽了,废话就不多说了。
感谢 happyparrot(快乐鹦鹉)的关注!!
ocean1