双缓冲技术成熟版!绘那个项目图,无闪烁
来源:互联网 发布:淘宝联盟卖家平台 编辑:程序博客网 时间:2024/04/30 11:34
在Onpaint函数中添加:
CDC *pDC=GetDC();
CPoint ptCenter;
CRect rect,ellipseRect;
GetClientRect(&rect);
ptCenter = rect.CenterPoint();
CDC dcMem; //用于缓冲作图的内存DC
CBitmap bmp; //内存中承载临时图象的位图
dcMem.CreateCompatibleDC(pDC); //依附窗口DC创建兼容内存DC
bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());//创建兼容位图
dcMem.SelectObject(&bmp); //将位图选择进内存DC
dcMem.FillSolidRect(&rect,RGB(255,0,0));//设置背景颜色
/* for(int i=20;i>0;i--) //在内存DC上做同样的同心圆图象
{
ellipseRect.SetRect(ptCenter,ptCenter);
ellipseRect.InflateRect(i*10,i*10);
dcMem.Ellipse(ellipseRect);
}*/
// CDC* pDC=GetDC();
CPen pen,*pOldPen;
pen.CreatePen(PS_SOLID,7,RGB(255,0,0));
pOldPen=dcMem.SelectObject(&pen);
dcMem.Ellipse(400,100,600,300);//画圆
dcMem.Rectangle(470,170,530,230);//圆里的小正方形
dcMem.Rectangle(50,100,380,300);//显示区域的大正方形
dcMem.Rectangle(80,120,350,280);//显示区域的小正方形
dcMem.MoveTo(470,230);
dcMem.LineTo(400,300);
dcMem.MoveTo(400,100);
dcMem.LineTo(470,170);
dcMem.MoveTo(600,100);
dcMem.LineTo(530,170);
dcMem.MoveTo(600,300);
dcMem.LineTo(530,230);
dcMem.SetBkMode(TRANSPARENT);
dcMem.TextOut(485,130,"UP");
dcMem.TextOut(475,250,"DOWN");
dcMem.TextOut(430,200,"C");
dcMem.TextOut(550,200,"OK");
dcMem.SelectObject(pOldPen);
pen.DeleteObject();
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);//将内存DC上的图象拷贝到前台
dcMem.DeleteDC(); //删除DC
bmp.DeleteObject(); //删除位图
}
其他的就是添加onbkgnd函数吗,并将内容修改为 return true;
- 双缓冲技术成熟版!绘那个项目图,无闪烁
- 双缓冲实现无闪烁绘图
- 不用双缓冲实现无闪烁图象
- 不用双缓冲实现无闪烁图象
- 不用双缓冲实现无闪烁图象
- 双缓冲技术解决MFC重绘闪烁问题
- Java中用双缓冲技术消除闪烁
- bitmap双缓冲技术-防止屏幕闪烁
- [转载]什么是闪烁及双缓冲技术
- java 清除图像闪烁--双缓冲技术
- c++双缓冲技术绘图避免闪烁
- Java中用双缓冲技术消除闪烁
- 双缓冲技术解决屏幕刷新闪烁
- 利用双缓冲技术解决图像闪烁
- Qt组件中的双缓冲无闪烁绘图
- MFC制作双缓冲无闪烁的字幕滚动条
- MFC制作双缓冲无闪烁的字幕滚动条
- MFC利用双缓冲实现屏幕无闪烁刷新
- Joshua Bloch访谈:API对设计流程的影响
- SPI:高速同步串行口
- flash builder4 plugin安装问题汇总
- Linux下常用配置文件及常用命令介绍
- spring blazeDS Integration简单介绍
- 双缓冲技术成熟版!绘那个项目图,无闪烁
- 闲聊linux中的input设备(2)初次相识便好上
- LWIP 协议栈解析(1)
- WIndow mobile 6 SDK 下载
- [精华] 跟我一起写 Makefile
- 好好活着
- 先做人后做事
- 在jsp 中加锚点
- 类中定义常量