呵呵刚答一个画线的就复制过来了
备份一个DC每次都重画直线的区域(重画区域会增加代码量,不怕屏闪就全重画就好了),再把线画上,取消就不画线就好了。
CDC* pDC;
CBitmap m_bitmap; // Offscreen bitmap
CBitmap* m_pOldBitmap; // bitmap originally found in CMemDC
CDC* m_pDC; // Saves CDC passed in constructor
CRect m_rect; // Rectangle of drawing area.
// 备份DC
CreateCompatibleDC(pDC);
m_bitmap.CreateCompatibleBitmap(pDC, m_rect.Width(), m_rect.Height());
m_pOldBitmap = SelectObject(&m_bitmap);
// 画DC
m_pDC->BitBlt(m_rect.left, m_rect.top, m_rect.Width(), m_rect.Height(),
this, m_rect.left, m_rect.top, SRCCOPY);
SelectObject(m_pOldBitmap);
怎样让它不会擦除掉表格呢?
你绘制出的格子或者点线面,你应该自己清楚在什么位置
你是怎么擦除的?怎么会控制不了擦除啊,判断不是网格才擦除就可以了啊
其实我做的话
画直线、举行、圆、橡皮擦等功能,我都会存到List里去,一个图形绘制,一个Item,放到List里去
擦除,就是判断鼠标操作时,选择的点中的是什么坐标,这个坐标位置处是哪个图形,从List里删除这个Item后,重新绘制所有东西,包括什么背景幕布,网格,List中的所有各种图形
先把格子绘制到一个CBitmap中
以后绘制时,先SelectObject这个CBitmap,然后再绘制其他