我有一个过程控制系统。它有一个巨大的二维工作空间,所有的逻辑都在那里布置。
二维工作空间是一个坐标系。
此工作区与许多传统的MFC软件组件交互,这些组件单独向工作区贡献图形(设备上下文传递给所有贡献者)。
现在,其中一个软件组件将AutoCAD图形渲染到曲面上。但是,设备上下文的分辨率不足以处理此作业的详细信息。不幸的是,设备上下文逻辑分辨率是由我们自己的坐标系决定的,在高缩放级别下,坐标系与设备单位(像素)有很大不同。
例如,使用
DC.MoveTo(1,1);
DC.LineTo(1,2);
.... 实际上,即使它只是通过一个逻辑单元的增量直接绘制到设备上下文中,也会在屏幕上覆盖相当长的距离。但线条的宽度仍然只有一个设备像素。圆看起来分辨率很高,但其数据(中心点和半径)只能粗略递增。
*加载和显示预定义图像时,请创建分辨率更适合的设备上下文。问题是其他图形提供者使用旧的逻辑单元与之交互,当对新的DC使用时,会导致图形元素太小和移位。
-
我想知道我是否可以创建一些DC包装器,通过不同的api接受这两种坐标,然后在内部将它们转换为高分辨率坐标。
-
是否可以有两个逻辑/设备单元比率不同的DCs?把它们都呈现在屏幕上?
我提到了一个圆被渲染得很漂亮,只有一个像素的宽度,尽管它的位置和半径是受限制的。垂直线也渲染得很漂亮,即使端点只能用粗略的坐标表示。这使我相信,从技术上讲,可以在一个区域中画出一个在DC中逻辑坐标只能用小数来描述的区域。
有人知道该怎么做吗?