我做的是一个标签设计的程序, 主要实现以下功能:
能作基本图形的绘制, 各种条形码的绘制,作图模式为MM_HIMETRIC,实现视图的无级缩放,定制标签的大小, 以上功能基本上都已经实现,  现在有一个很重要的作图问题我实现不了,很着急:
当鼠标点击条形码移动的时候,  每个条形宽度总是在屏幕上显示大小变动(应该是宽度固定的),我是这样实现的, 当鼠标移动过程中重新绘制一遍条形码, 再对这个区域进行更新。
我想可能是不是要重新创建一个内存DC,在这个DC里面把条码绘制好了再复制到屏幕上, 这样的话绘制条形码的起点每次都在DC的原点就不会因为起点坐标不同而导致绘制条码时的宽度每次都不同,不知道是不是这样。希望能有个好的建议或者有原码更好谢谢!

解决方案 »

  1.   

    是的,请问有没有MSDN的一个例子?     Drawcli
    如果有请打开工程,打开drawobj.cpp, 查找 "switch (m_nShape)"
    然后修改如下代码运行后作一个矩形图然后再慢慢移动仔细看看是不是宽度不固定
    case rectangle:
    {
    pOldBrush = (CBrush*)pDC->SelectStockObject(NULL_BRUSH);
    CRect rc = rect;
    rc.NormalizeRect();
    int w = 10;
    for (int i= 0; i<=rc.Width() / w; i++)
    {
    brush.DeleteObject();
    brush.CreateSolidBrush(RGB(0, 0, 0) );
    if(i % 2 == 0)
    pDC->FillRect(CRect(rc.left + i * w, rc.top, rc.left + (i + 1) * w, rc.bottom) , &brush);
    }
    pDC->Rectangle(rect); }

    break;
      

  2.   

    怎么都不来回答啊我很着急是不是要创建一个memDC, 所有绘制
    参数都和视图DC一样, 绘制好了再向memDC BitBlt呢具体应该怎么做啊?