void CMyDlg::OnPaint()
{if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CClientDC dc(this);
dc.MoveTo(10,10);
dc.LineTo(10,100);//上面的直线能画出来
Graphics graphics(GetDC()->m_hDC);
Pen pen(Color(255,0,0,0));
RectF rect1(10,10,100,50);
graphics.DrawRectangle(&pen,rect1);
Invalidate(false);//矩形画不出来
CDialog::OnPaint();
}
} 曾经有这么一个贴子,他解决了,但是他没有写是啥原因,我现在碰到这问题。是为啥呢。我还是画不出来呢。

解决方案 »

  1.   

    BOOL CMyImageApp::InitInstance()
    {
    // 加载 GdiPlus
    GdiplusStartupInput gdiplusStartupInput;
    GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
    //
      

  2.   

    else
    {
    CClientDC dc(this);
    dc.MoveTo(10,10);
    dc.LineTo(10,100);//上面的直线能画出来
    Graphics graphics(GetDC()->m_hDC);dc 不对
    1. paint 中不能用 CClientDC , 只有窗口 有效 后 才能 用
    else
    {
    CPaintDC dc(this); // 用于绘制的设备上下文
    dc.MoveTo(10,10);
    dc.LineTo(10,100);//上面的直线能画出来
    Graphics graphicsdc.m_hDC);
      

  3.   

    我改成paintDC了,也画不出来
      

  4.   


    else
    {
         CPaintDC dc(this);
         Graphics graphics(dc.m_hDC);
         Pen pen(Color(255,0,0,0);
         graphics.DrawRectangle(&pen, 10,10, 100,100);
         Invalidate(FALSE);
    }
      

  5.   

     Invalidate(FALSE); 
    为什么 叫 窗口 无效 ? 无效后 窗口 又要 重绘 !
    不要 这句。