左側は、ペイントのようなプログラムを使用して描いたポリゴンです。右側は、System.Drawing.Bitmap/Graphics によって描画された多角形です。
描画するコードは次のとおりです。
protected static Bitmap CropImage(Bitmap src, Vector2[] rect)
{
var result = new Bitmap(src.Width, src.Height);
using (Graphics g = Graphics.FromImage(result))
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
var pen = new Pen(Color.White);
g.DrawImage(src, new Point(0,0));
var poly = rect.Select(p => p.ToPointF()).ToArray();
g.DrawPolygon(pen, poly);
}
return result;
}
poly
は:
{System.Drawing.PointF[4]}
[0]: {X = 57.4230042 Y = 57.4229736}
[1]: {X = 147.058868 Y = 56.0224}
[2]: {X = 148.43277 Y = 143.951767}
[3]: {X = 58.7969131 Y = 145.352341}
画像の黒い四角はそれぞれ 50x50 です。を見るとpoly
、すべての座標は予想どおりpoly[0]
で、50,50 を少し上回り、"6" というラベルの付いた黒い四角の内側に対応します (左の画像を参照)。
では、どのようGraphics
に混乱して間違った場所に置くのでしょうか? 四角形全体を縮小しているようです。