在面板上以毫米为单位对齐网格?

时间:2010-06-18 16:44:14

标签: .net winforms gdi+

我有一个小组。我需要在WYSIWYG中表示它。

现在,当绘图时,可以使用毫米而不是像素进行绘制。

graphics.PageUnit = GraphicsUnit.Millimeter
graphics.DrawRectangle(pen,rect)

是否可以定位控件(按钮,文本框)也以毫米为单位,以获得面板的“真实”纸质图像?

在VB6中,这是可能的。 .NET是向后退一步还是VB6只使用我们不想在.NET中使用的近似值?

3 个答案:

答案 0 :(得分:1)

很简单,如果没有为您支持的每台显示器执行特定的数学运算,我认为这是不可能的。

DPI通常用于打印,可用于纸张测量。但是,无法保证在显示器上进行测量,因为您可以随时更改分辨率并且仍然具有相同的DPI(通常为96)。除此之外,您还需要考虑显示器尺寸。

您需要了解的是特定显示器的Pixel Density或PPI。我不相信这可以获得,但如果我错了,其他人可以纠正我。

答案 1 :(得分:0)

试试这个:

var dpiX = Graphics.DpiX;//horizontal
var dpiY = Graphics.DpiY;//vertical

var mmX = (width_in_pixles * 25.4 ) / dpiX;
var mmY = (height_in_pixles * 25.4) / dpiY;

1英寸有25.4毫米,所以使用上面的公式,你可以用mm计算控制的高度和宽度,并调整它们的位置。

答案 2 :(得分:0)