2010-06-18 81 views
0

我有一個面板。我需要在WYSIWYG中表示它。在面板上以毫米爲單位對齊網格?

現在,當在其上繪製時,可以使用毫米而不是像素進行繪製。

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

是否有可能位置控制(按鈕,文本框)也以毫米爲單位,以獲得面板的「真正的」紙形象?

在VB6中這是可能的。 .NET向後退步還是VB6只是使用我們不想在.NET中使用的近似值?

+0

爲什麼不把DPI,並從英寸轉換爲毫米? – 2010-06-18 16:45:34

+0

顯示器DPI會告訴你屏幕上每英寸有多少個點(像素)。如果您想要正確測量,請將所需的毫米/ 25.4(轉換爲英寸)* DPI。這會告訴你你需要多少像素。 – 2010-06-18 16:56:13

+0

你會詳細說明嗎?我不需要以英寸爲單位進行轉換,但是毫米,但問題依然存在。比方說,我必須將文本框放置在離頂部頂角5x5毫米處。 'myTextBox.Location = ??'DPI應該表示每英寸** DOTS **,而不是每英寸**像素**。 – serhio 2010-06-18 16:58:19

回答

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; 

有25.4毫米在1英寸所以使用上述式就可以計算出高度和在毫米控制寬度和也調整它們的位置。

+1

DPI應該表示每英寸** DOTS **,而不是**每英寸**像素**。 – serhio 2010-06-18 17:00:20

1

很簡單,我不相信這是可能的,沒有爲您支持的每臺顯示器執行特定的數學運算。

DPI通常用於打印,對紙張測量非常有用。但是,無法保證顯示器上的測量結果,因爲您可以隨時更改分辨率,並仍具有相同的DPI(通常爲96)。除此之外,您還需要考慮顯示器尺寸。

您需要知道的是您的特定顯示器的Pixel Density或PPI。我不相信這可以得到,但如果我錯了,其他人可以糾正我。

+0

hm。那麼,VB6比VB.NET更強大? – serhio 2010-06-21 08:08:14

+0

如果測量結果在打印尺寸或屏幕尺寸方面是否準確?我不確定VB6是如何工作的,但從我在Google上看到的情況來看,VB6的測量結果只能用於打印。 – 2010-06-21 12:43:15