我要响应方向键消息,没移动一下,将原来位置绘制的直线颜色变为红色,但是绘制的直线并没有变化,想问下怎么处理,
应该是被冲洗掉了。应为方向键快速移动的时候可以看到绘制的直线有红色闪烁。
一下是代码。
Pen penBlack(Color::Black,1);
Pen penRed(Color::Red,1); if (m_ptHead.X != 0 && m_ptHead.Y != 0 && m_ptTail.X != 0 && m_ptTail.Y != 0)
{
graphics.DrawLine(&penRed, m_ptHead, m_ptTail);
}

if (m_ptHeadPre.X != 0 && m_ptHeadPre.Y != 0 && m_ptTailPre.X != 0 && m_ptTailPre.Y != 0)
{
graphics.DrawLine(&penBlack, m_ptHead, m_ptTail);
}
m_ptHeadPre和m_ptTailPre是前一条直线的坐标,主要是绘制之后,将前一条直线恢复为黑色。
以下是绘制线的绘制代码。
m_DrawDataLine.SetDrawPos(pt1, pt2, m_ptHCHeadPre, m_ptHCTailPre);
m_ptHCHeadPre = pt1;
m_ptHCTailPre = pt2;
m_DrawDataLine.DrawDataLine(*m_pGraphics);
问题是在同一个位置绘制直线时,不显示,想问下大神怎么解决。

解决方案 »

  1.   

    为什么不用D2D呢,完全支持硬件加速。GDI+完全不支持硬件加速,还不如GDI....
      

  2.   

    Pen penBlack(Color::Black,1);
    Pen penRed(Color::Red,1); if (m_ptHead.X != 0 && m_ptHead.Y != 0 && m_ptTail.X != 0 && m_ptTail.Y != 0)
    {
    graphics.DrawLine(&penRed, m_ptHead, m_ptTail);
    }
    else //←加这句?
    if (m_ptHeadPre.X != 0 && m_ptHeadPre.Y != 0 && m_ptTailPre.X != 0 && m_ptTailPre.Y != 0)
    {
    graphics.DrawLine(&penBlack, m_ptHead, m_ptTail);
    }