解决方案 »

  1.   

    是这样的,gdi+相对gdi的绘图效果要好不少,但是效率却比gdi慢不少。
    我们在绘制复杂的图形时,也遇到gdi+函数执行比较卡的问题。
      

  2.   

    那怎么弄,用别的线条显示很不平滑,用GDI+很平滑但又卡了
      

  3.   

    会不会是你这些GetSafeHdc、SetSmoothMode浪费时间了,你可以试试在初始化就SetSmoothMode,然后后面就只需moveto lineto了,这样的话你要把Graphics graphics(hdc);设置为成员变量了,不能是局部变量
    释放资源:
    graphics.ReleaseHDC( hdc);
    DeleteDC(hdc);
      

  4.   


    感觉有点道理,不过怎么在,h中申明Graphics graphics(hdc);?试了半天都有问题
      

  5.   


       Graphics graphics( pDC->m_hDC );
       Pen myPen(Color(255,0,0,0),1);
       graphics.SetSmoothingMode(SmoothingModeHighSpeed);//要速度不要质量
       graphics.DrawLine(&myPen,0,0,50,200);   graphics.SetSmoothingMode(SmoothingModeHighQuality);//高质量
       graphics.DrawLine(&myPen, 50, 0 ,130,200);//还有一个参数SmoothingModeAntiAlias,估计是折中的意思。速度也要,质量也不能落下。
    可以这样,定义时Graphics *m_pGraphics;然后构造函数中:m_pGraphics = NULL;OnPaint中:if(m_pGraphics == NULL)
    {
         m_pGraphics = new Graphics(hdc);
         SetSmoothMode....
    }
    MoveTo..
    LineTo...
      

  6.   

    最后,加上资源释放,试试参数SmoothingModeAntiAlias
      

  7.   

    SmoothingModeHighSpeed用起来感觉还不如MoveTo..LineTo...SmoothingModeAntiAlias用起来没有什么变化。if(m_pGraphics == NULL)
    {
         m_pGraphics = new Graphics(hdc);
         SetSmoothMode....?????这里是怎么破的
    Graphics.SetSmoothingMode()错误
    m_pGraphics .SetSmoothingMode()错误
    SetSmoothingMode()错误}
      

  8.   


    if(m_pGraphics == NULL)
    {
        CWindowDC dc(this);//this为当前窗口指针
        HDC hdc=dc.GetSafeHdc();
        m_pGraphics = new Graphics(hdc);
        m_pGraphics->SetSmoothingMode(SmoothingModeHighQuality);//设置为平滑曲线
    }
    MoveTo...
    Line To...可破
      

  9.   


    if(m_pGraphics == NULL)
    {
        CWindowDC dc(this);//this为当前窗口指针
        HDC hdc=dc.GetSafeHdc();
        m_pGraphics = new Graphics(hdc);
        m_pGraphics->SetSmoothingMode(SmoothingModeHighQuality);//设置为平滑曲线
    }
    MoveTo...
    Line To...可破
    对额,指针应该用->
    可以运行了,不过结果不理想,没什么变化