请大家帮帮我,位图缩放的问题! 我要把一副图从一个矩形区域拷贝到另一个矩形区域,不用StretchBlt()函数(因为用了它会导致我的图片闪烁),请问有什么好的办法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 采用双缓冲:类似关键代码如下: RECT displayRect; GetDlgItem(IDC_STATIC)->GetWindowRect(&displayRect); CDC *pDC=CDC::FromHandle(::GetDC(GetDlgItem(IDC_STATIC)->GetSafeHwnd())); CDC MemDC; //首先定义一个显示设备对象 CBitmap MemBitmap;//定义一个位图对象 //随后建立与屏幕显示兼容的内存显示设备 MemDC.CreateCompatibleDC(NULL); //这时还不能绘图,因为没有地方画 ^_^ //下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小 MemBitmap.CreateCompatibleBitmap(pDC,displayRect.right-displayRect.left, displayRect.bottom-displayRect.top); //将位图选入到内存显示设备中 //只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上 CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); //先用背景色将位图清除干净,这里我用的是白色作为背景 //你也可以用自己应该用的颜色 MemDC.FillSolidRect(0,0,displayRect.right-displayRect.left, displayRect.bottom-displayRect.top,RGB(255,255,255)); //绘图 RECT tmpRect; // 。 MemDC.Rectangle(&tmpRect); // tmpStr = _T("jjj"); MemDC.TextOut(400, 310, tmpStr); //将内存中的图拷贝到屏幕上进行显示 pDC->BitBlt(0,0,displayRect.right-displayRect.left, displayRect.bottom-displayRect.top,&MemDC,0,0,SRCCOPY); //绘图完成后的清理 MemBitmap.DeleteObject(); MemDC.DeleteDC(); ReleaseDC(pDC); CDialog::OnPaint(); 如何给ListCtrl每一列都加上复选框 怎么建头文件才会出现“#if !defined(AFX_PLANE....”这代码? 一个关于宏定义的问题 在同一台PC,访问不同的网站选择不同的网卡 CImage的问题,用过的朋友近来帮忙. 控制台程序和可视化界面性程序通讯 CreateDIBitmap失败!!帮帮我啊~~ 请问如何在:CEditView中显示文本!?是在其OnDraw()中显示吗? 请问在VC中采用何种方式读写文件最快? 求教16位色下ALPHA混合的三原色算法。 在文档类中定义了一个成员变量,为什么还是说没定义呢? 多个界面
GetDlgItem(IDC_STATIC)->GetWindowRect(&displayRect); CDC *pDC=CDC::FromHandle(::GetDC(GetDlgItem(IDC_STATIC)->GetSafeHwnd()));
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
//这时还不能绘图,因为没有地方画 ^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小
MemBitmap.CreateCompatibleBitmap(pDC,displayRect.right-displayRect.left, displayRect.bottom-displayRect.top);
//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(0,0,displayRect.right-displayRect.left, displayRect.bottom-displayRect.top,RGB(255,255,255));
//绘图
RECT tmpRect;
// 。 MemDC.Rectangle(&tmpRect); //
tmpStr = _T("jjj");
MemDC.TextOut(400, 310, tmpStr);
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,displayRect.right-displayRect.left, displayRect.bottom-displayRect.top,&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
ReleaseDC(pDC); CDialog::OnPaint();