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);
}
謝謝。但我在3臺不同的機器上測試了應用程序,並通過g.DPIX檢索了這些顯示器的DPI值。值是96dpi。是否有任何參數隨不同顯示器或不同屏幕分辨率而變化。我確實使用了其他選項,如GetDeviceCaps(),Screen.PrimaryScreen.Bounds。我無法準確理解哪個參數因不同的機器而異,或者至少應用程序應該適用於不同的分辨率。 – user338081 2010-05-11 09:46:59
不,這是我的觀點:dpi很少準確,有人會正確配置他們的系統更爲罕見。記住:機器本身無法知道它連接的顯示器尺寸。 EG:在家我有一臺24「和26」的顯示器,兩臺顯示器的分辨率都一樣。每個顯示器上的DPI是不同的 - 但Windows不知道這一點。在我個人告訴Windows關於顯示器的差異之前,您的軟件*無法在我的機器上按要求工作。如果你考慮到分辨率的變化,這個問題變得更加複雜...... – 2010-05-11 12:06:48
Yup謝謝..贏了。 – user338081 2010-05-12 03:36:46