1.改变画笔的颜色、宽度、粗细
在ONdraw里面写入
void CMFCpaintView::OnDraw(CDC* pdc)
{CPen pen (PS_DASH , 1,RGB ( 100, 0, 0 ) );
]
我们查看Cpen定义,发现它的普通构造函数有三个参数,于是我们构造了这样的一个对象,PS_DASH表示虚线,1表示粗细,RGB表示颜色
2.选择这个画笔
CPen *poldpen=pdc->SelectObject(&pen);
TRACE("style=%d,color=%08X,width-%d\r\n", logpen.lopnStyle,logpen.lopnColor, logpen.lopnWidth);
这个函数会将之前的画笔返回,我们用poldpen保留,因为在这个程序用完这个画笔,不能影响其他程序的绘制,另外我们可以打印poldpen,打印结果为
style = 0, color = 00000000, width - 0
表示它是原始黑色的画笔,width为0就是说它显示粗细为1
运行后,发现画笔还是有点细,我们把粗细增加到50,发现它不是虚线了,这是因为线条太粗会掩饰线型,只有为1时,线型才会起作用,才能看出它时虚线,即线型超过1时,就会失去作用
3.为了使它更粗,我们采用双线绘制
CPoint start = m_start; CPoint cur = m_cur;start.y--; cur.y--;if (m_status){pdc->MoveTo (m_start);pdc->LineTo (m_cur);pdc->MoveTo (start);pdc->LineTo (cur);}else{cur = m_stop;cur.y--;pdc->MoveTo (m_start);pdc->LineTo (m_stop);pdc->MoveTo (start);pdc->LineTo (cur);}
我们画两条线,第二条线是第一条Y坐标-1,但是在垂直方向还是只有一条,这里值得改进,但是我不会
4.在最后,将画笔设置为原来的画笔
pdc->SelectObject(poldpen);
5.设置画刷
5.1定义两个画刷,并选择它
CBrush brush(RGB(255, 0, 0)), brush2(RGB(0, 255, 0));
CBrush *poldbru = pdc->SelectObject(&brush);
5.2填满这个矩形区域
pdc->FillRect(CRect(m_start, m_cur), &brush);
FILLRECT表示绘制一个矩形,CRect函数里的两个点分别作为矩形的左上角和右下角,创建一个表示矩形区域,第二个参数表示画刷,第二个参数如果为null,就是上下文的画刷