在OnDraw时用了graphics.SetPageUnit(UnitMillimeter);//设置一个单位为1毫米
将当前屏幕显示单位转换为毫米,但是在显示图片时屏幕将图片的像素大小当作毫米来显示..要怎样来解决?

解决方案 »

  1.   

    无论用什么单位,最终都要转换成像素值,这依赖于输出设备的DPI参数,通常屏幕的DPI是96,通过GetDeviceCaps来获取水平和垂直方向的DPI。
    1英寸 = 25.4 毫米
    这样转换成像素大小:
    x = 毫米数 * GetDeviceCaps(屏幕DC,LOGPIXELSX) * 10 / 254;
    y = 毫米数 * GetDeviceCaps(屏幕DC,LOGPIXELSY) * 10 / 254;
      

  2.   

    这是个 关于设备坐标 和逻辑坐标的问题。
    前者以  像素为单位, 二逻辑单位受到 映射模式的限制,一般我们都不太管,默认为MM_TEXT,还有些 其他模式
    ,楼主 可参考 技术内幕 看一下
      

  3.   

    DrawImage前恢复原来的映射模式,显示完成后再设置成你想要的。