我正在嘗試編寫一個程序,該程序將在透明背景上放置十字準線,但十字準線會總是以偏移量繪製,即使放置的座標是正確的。C#winforms無法在屏幕中間畫圖,即使使用正確的屏幕高度和寬度
其中提請十字線的方法:
public void drawSquareCrosshair(Graphics gfx, Color color) {
SolidBrush lightChrosshairColor = new SolidBrush(color);
SolidBrush transparentColor = new SolidBrush(Color.Fuchsia);
// Crosshair Bounds
int width = 20;
int height = 20;
int x = (SystemInformation.VirtualScreen.Width/2)- (width/2);
int y = (SystemInformation.VirtualScreen.Height/2) - (height/2);
Console.WriteLine("X: " + x);
Console.WriteLine("Y: " + y);
gfx.FillRectangle(lightChrosshairColor, x, y, width, height);
}
的邏輯是,在屏幕的寬度除以二,並且由十字除以二的寬度minussed。高度也是一樣。我已經設置了圖形對象來在面板上創建圖形,該面板固定在窗體的所有面上,但面板的高度和寬度仍然是1920x1080,就像窗體一樣。我設置窗體的方式是通過使用form.FormBorderStyle = FormBorderStyle.None;
和form.WindowState = FormWindowState.Maximized;
但是,似乎並不是這樣,因爲十字準線仍然放置在類似於屏幕中間的座標上( X:960,1920:1080屏幕上的Y:540)。我創建了一個桌面背景,作爲Photoshop中屏幕中間的十字準線(圖像也是1920x1080)。以下是它的外觀: The square is the crosshair painted by my application, the red cross is the wallpaper
有沒有人遇到過這個問題?
謝謝! 這工作完美無瑕,我很困惑。 –
更準確的實現是'int x =(ClientRectangle.Width - width)/ 2;'爲了防止舍入錯誤(整數除法) –