MFC之双缓存实现鼠标划线
来源:互联网 发布:linux tftp服务器 cps 编辑:程序博客网 时间:2024/05/29 13:20
MFC之双缓存实现鼠标划线
本文实现的是MFC中一个简单的鼠标划线功能,目的是为了实现像电脑中的画图软件中画线一样的效果:鼠标点击后开始划线,随着鼠标的移动,直线也移动变化,最终释放鼠标时完成一条直线的绘制。
为避免绘画中的闪烁,采取了双缓存机制进行绘画。
(一)visual studio2013,创建MFC程序
(二)程序代码
主要是在默认生成的View文件中修改:
1、在MFCTest1View.h头文件中创建变量
private: CPoint origin; CPoint end; BOOL m_bDraw=FALSE; CDC BufferDC; CBitmap BufferBitmap;
2、OnDraw()函数
// CMFCTest1View 绘制void CMFCTest1View::OnDraw(CDC* pDC){ CRect rc; GetClientRect(&rc); if (BufferDC.GetSafeHdc() == NULL){ BufferDC.CreateCompatibleDC(pDC); BufferBitmap.CreateCompatibleBitmap(pDC, rc.Width(), rc.Height()); BufferDC.SelectObject(&BufferBitmap); BufferDC.FillSolidRect(0, 0, rc.Width(), rc.Height(), RGB(255, 255, 255)); } pDC->BitBlt(0, 0, rc.Width(), rc.Height(), &BufferDC, 0, 0, SRCCOPY); // TODO: 在此处为本机数据添加绘制代码}
3、添加的鼠标响应事件
// CMFCTest1View 消息处理程序void CMFCTest1View::OnLButtonDown(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 BufferDC.SetROP2(R2_NOTXORPEN); origin= end = point; m_bDraw =TRUE; CView::OnLButtonDown(nFlags, point);}void CMFCTest1View::OnLButtonUp(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 //BufferDC.MoveTo(origin); //BufferDC.LineTo(point); m_bDraw = FALSE; CView::OnLButtonUp(nFlags, point);}void CMFCTest1View::OnMouseMove(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 if (m_bDraw == TRUE){ BufferDC.MoveTo(origin); BufferDC.LineTo(end); BufferDC.MoveTo(origin); BufferDC.LineTo(point); end = point; Invalidate(FALSE); } CView::OnMouseMove(nFlags, point);}
/第一次写,先简单记录一下,以后再改进了哈~/
(void*Zhou的首博)
1 0
- MFC之双缓存实现鼠标划线
- canvas实现鼠标划线
- VC++50个必做例子之鼠标划线
- 橡皮筋算法MFC实现--动态划线
- MFC 双缓存的实现
- MFC双缓存绘图实现
- 鼠标的划线问题
- 鼠标移动划线
- HTML上划线 中划线 下划线实现
- 实现中划线
- MFC 双缓存技术
- MFC双缓存画图
- MFC双缓存画图
- 双缓存-MFC
- mfc双缓存画图
- MFC双缓存画图
- MFC双缓存画图
- MFC 双缓存绘图
- JSON和XML的解析[XStream]
- Android常见 面试题
- android Handler 学习笔记
- 安卓定位及坐标转换
- 刷题啦啦啦..
- MFC之双缓存实现鼠标划线
- poj 2204 hdu 1217 Arbitrage spfa判环 解题报告
- fgj
- 专题三 Problem H
- Duff in Love
- Octave 线性代数 矩阵 1
- iptables知识总结
- 这个博客不用了,转到博客园了
- ARP:地址解析协议/RARP:逆地址解析协议