2010-05-11 59 views
1

我正在使用c#中的以下代碼在面板上以毫米爲單位繪製矩形,方法是在運行時以毫米爲單位輸入寬度和長度。然而,由此產生的矩形在不同的監視器上大小不同。無論在任何監視器中運行應用程序,我都希望矩形顯示爲相同的大小。任何1可以幫助我嗎?目前10mm的寬度爲12mm,10mm的長度爲11mm,使用刻度。我在不同的顯示器上測試了應用程序,再次顯示了不同的長度。無論如何,我可以證明它具有相同的寬度和長度?以毫米爲單位的繪製矩形不顯示準確的寬度

void panel1_Paint(object sender, PaintEventArgs e) 
{ 
    SolidBrush ygBrush = new SolidBrush(Color.YellowGreen); 
    g = panel1.CreateGraphics(); 
    g.PageUnit = GraphicsUnit.Millimeter; 

    int w = Int32.Parse(textBox1.Text.ToString()); 
    int h = Int32.Parse(textBox2.Text.ToString()); 

    rct = new Rectangle(94, 27, w, h); 
    g.FillRectangle(ygBrush, rct); 
} 

回答

2

大多數顯示器沒有正確配置,因此計算機知道DPI(每英寸點數)。像毫米這樣的物理單位只有在計算機知道水平和垂直方向上有多少個像素爲毫米時才起作用。

本質上,您使用的方法是正確的 - 但在現實世界中,您不太可能會遇到正確配置的機器。

如果你需要在你的軟件中解決這個問題,你可以包含一個「配置」選項,用戶將負責設置應用程序的規模。

+0

謝謝。但我在3臺不同的機器上測試了應用程序,並通過g.DPIX檢索了這些顯示器的DPI值。值是96dpi。是否有任何參數隨不同顯示器或不同屏幕分辨率而變化。我確實使用了其他選項,如GetDeviceCaps(),Screen.PrimaryScreen.Bounds。我無法準確理解哪個參數因不同的機器而異,或者至少應用程序應該適用於不同的分辨率。 – user338081 2010-05-11 09:46:59

+0

不,這是我的觀點:dpi很少準確,有人會正確配置他們的系統更爲罕見。記住:機器本身無法知道它連接的顯示器尺寸。 EG:在家我有一臺24「和26」的顯示器,兩臺顯示器的分辨率都一樣。每個顯示器上的DPI是不同的 - 但Windows不知道這一點。在我個人告訴Windows關於顯示器的差異之前,您的軟件*無法在我的機器上按要求工作。如果你考慮到分辨率的變化,這個問題變得更加複雜...... – 2010-05-11 12:06:48

+0

Yup謝謝..贏了。 – user338081 2010-05-12 03:36:46

相關問題