图形重绘

wumeng553 2008-03-31 10:41:45
在OnDraw函数中实现图形的重绘,利用CPtrArray,但是每次刷新后图像所画图形的颜色,全部成了最后一次选择的颜色,
请教哪里出了错误,有什么解决办法吗?



头文件中定义:
CPoint m_ptOrigin;
CPoint m_ptEnd;
UINT m_nDrawType;
COLORREF m_ptclr;


void CGraphicView::OnDraw(CDC* pDC)
{
CGraphicDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);


CClientDC dc(this);
CPen pen(PS_SOLID, m_nLineWidth, m_clr);//m_clr为选择颜色的COLORREF

CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
pDC -> SelectObject(pBrush);


for (int i = 0; i < m_ptrArray.GetSize(); i++)
{
switch(((CGraph*)m_ptrArray.GetAt(i)) -> m_nDrawType)
{
case 1:
pDC -> SelectObject(&pen);
((CGraph*)(m_ptrArray.GetAt(i))) -> m_ptclr;
pDC -> MoveTo(((CGraph*)m_ptrArray.GetAt(i)) -> m_ptOrigin);
pDC -> LineTo(((CGraph*)m_ptrArray.GetAt(i)) -> m_ptEnd);

break;
case 2:
pDC -> SelectObject(&pen);
((CGraph*)(m_ptrArray.GetAt(i))) -> m_ptclr;
pDC -> Rectangle(CRect(((CGraph*)m_ptrArray.GetAt(i)) -> m_ptOrigin,
((CGraph*)m_ptrArray.GetAt(i)) -> m_ptEnd));

break;
case 3:
pDC -> SelectObject(&pen);
((CGraph*)(m_ptrArray.GetAt(i))) -> m_ptclr;
pDC -> Ellipse(CRect(((CGraph*)m_ptrArray.GetAt(i)) -> m_ptOrigin,
((CGraph*)m_ptrArray.GetAt(i)) -> m_ptEnd));
break;
}
}
}
...全文
70 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xiaoQ008 2008-03-31
楼上对的
pDC -> SelectObject(&pen);
返回以前的画笔
SelectObject(&Oldpen);
将以前的画笔重新选近DC
搂主应该理解吧
也可以在for循环前面
CPen Oldpen=pDC -> SelectObject(&pen);
在for循环后面
pDC -> SelectObject(&Oldpen);
回复
hanjinchidm 2008-03-31
你每一个Case语句都变成这种形式试试:
CPen Oldpen=pDC -> SelectObject(&pen);
((CGraph*)(m_ptrArray.GetAt(i))) -> m_ptclr;
pDC -> MoveTo(((CGraph*)m_ptrArray.GetAt(i)) -> m_ptOrigin);
pDC -> LineTo(((CGraph*)m_ptrArray.GetAt(i)) -> m_ptEnd);
pDC -> SelectObject(&Oldpen);
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-03-31 10:41
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……