2017-07-11 15 views
-1

異なる解像度の画像に同じサイズのrectを描きたいのですが、私がうまく説明できれば、画像に長方形を描くことができますが、(例えば)私は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申し訳ありませんが、私が欲しいのは、画像に長方形を描くことですが、(RectF)(0.0F、0.0F、100.0F、200.0F)を使用すると低解像度の画像であり、高解像度の画像では小さい。 –

+0

はい。 a)各画像に必要な倍率を計算し、b)描画する前にGraphics.ScaleTransformを実行してb)Graphicsを拡大縮小する必要があります。 – TaW

答えて

0

ベース解像度などを選択:80×60

は、画像解像度などを取得します。

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

は、ユーザーの解像度に基本解像度の規模を計算します。

var scaleWidth = imageWidth/80; 
var scaleHeight = imageHeight/60; 
規模等によりの

乗算あなたのRectの寸法:それはテストされていないので、

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

は自分の携帯電話にこの答えを書いたが、それは正しいはずです。

+0

非常にうまくいったよ。 –

+0

あなたのソリューションを使用して画像にテキストを書き込んで、画像の解像度に合わせてテキストを自動スケールする方法はありますか? @Xela –

関連する問題