设置画笔的宽度为1,2。。等,这些数的单位是象素还是什么?
我想把画笔宽度为1的线画的更细些,可以实现吗,这和坐标映射有
什么关系?

解决方案 »

  1.   

    象素。
    同时也遇到这方面的问题。就是,现在在一个图上用moveTo和LineTo画线的时候,我是在onMouseMove里面画的,因为么动态的显示。但是我们用到另外一个位图上的时候就出现屏幕在闪,就是因为在OnMouseMove里面用了Invalidate的原因,但是如果不用的话,用moveTo和LineTo就会画出所有的痕迹。不知道你有没有好的办法?
      

  2.   

    使用SetMapMode( int nMapMode );设置映射模式即可以在逻辑单位下改变线的粗细。MM_HIENGLISH   每个逻辑单位为0.001 英吋.X轴向右,Y轴向上。
    MM_HIMETRIC    每个逻辑单位为 0.01 毫米. X轴向右,Y轴向上。
    MM_LOENGLISH   每个逻辑单位为0.01 英吋.X轴向右,Y轴向上。
    MM_LOMETRIC    每个逻辑单位为 0.1 毫米. X轴向右,Y轴向上。印象中也可以基于以象素为单位的。你看看MSDN中这个函数的说明。
      

  3.   

    to: wangxjlb(力斌)
        用 SetROP2 可以解决你的问题to:lingfeng8888(棱枫) 
       你说的是指1,2。。等数的单位是:逻辑单位吗
      

  4.   

    m_OldDrawMode=pdc->SetROP2(R2_NOTXORPEN);//重画时可以擦除原来的画线
    m_End=point;

    //画斜线
    if(m_HVLine)
    {
    //擦去上次的画
    pdc->MoveTo(m_Begin.x ,m_Begin.y );
    pdc->LineTo(m_OldEnd.x ,m_OldEnd.y );
    //重新绘画
    pdc->MoveTo(m_Begin.x ,m_Begin.y );
    pdc->LineTo(m_End.x ,m_End.y );       
    }
    m_OldEnd=m_End;
    pdc->SelectObject(OldPen);
    ReleaseDC(pdc);
    pen.DeleteObject();
    不用刷屏的。
      

  5.   

    msdn有详细的解答,即可以指定设备单位,也可以指定为逻辑单位,
    当指定笔的风格为PS_GEOMETRIC或者PS_USERSTYLE是给出的笔宽必须是逻辑单位,当时PS_GEOMETRIC时,笔宽要设置为1,当笔宽设置为0 的时候,就和映射方式无关了,
    msdn有很详细的解释,自己看去吧,我说了msdn上面的一点点而已!