2017-07-11 42 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 –