2017-07-11 53 views
-1

我想繪製一個在不同分辨率的圖像上具有相同大小的矩形。如果我需要解釋得很好,我想要的是在圖像上繪製矩形,但是您知道何時(例如)使用RectangleF(0.0 F,0.0F,100.0F,200.0F),它在低分辨率圖像上看起來很大,在高分辨率圖像上也很小。C#如何在不同分辨率的圖像上繪製矩形?

任何幫助將不勝感激。

我的代碼:

Color customColor = Color.FromArgb(50, Color.Blue); 
SolidBrush shadowBrush = new SolidBrush(customColor); 
// Create array of rectangles. 
RectangleF[] rects = { new RectangleF(image.Width/2, 0.0F, 100.0F, 200.0F), new RectangleF(100.0F, 200.0F, 250.0F, 50.0F) }; 
g.FillRectangles(shadowBrush, rects); 
+0

'圖像分辨率'可以表示像素大小或dpi。 '同樣的規模'也不是很清楚。請詳細說明您的問題! – TaW

+0

@TaW對不起,如果我couldent解釋好,我想要的是在圖像上畫一個矩形,但你知道什麼時候(例如)我使用RectangleF(0.0F,0.0F,100.0F,200.0F)它會出現大低分辨率圖像,在高分辨率圖像上也很小。 –

+0

是的。您需要a)爲每個圖像計算必要的縮放因子,然後b)在繪製之前通過執行Graphics.ScaleTransform來縮放圖形。 – TaW

回答

0

選擇基本分辨率例如:80x60

獲取圖像分辨率例如:

var imageWidth = image.Width; 
var imageHeight = image.Height; 

計算基本分辨率給用戶解決規模:

var scaleWidth = imageWidth/80; 
var scaleHeight = imageHeight/60; 

由秤如您乘以矩形的尺寸:

newX = baseX * scaleWidth, 
newY = baseY * scaleHeight, 
newWidth = baseWidth * scaleWidth, 
newHeight = baseHeight * scaleHeight 

寫了我的手機上這個答案所以它是未經測試,但它應該是正確的。

+0

非常感謝。非常感謝您 –

+0

如何使用您的解決方案在圖像上書寫文字並根據圖像分辨率自動縮放文字? @Xela –