2

小さな画像がたくさんある大きな .PNG があります。大きな画像の一部を小さな画像に置き換えたい。したがって、X 座標と Y 座標では、画像のその部分が左上隅から置き換えられますが、元の画像の残りの部分はそのまま残ります。

MSDN の Graphics メソッドについて読んでいて、同様の例をいくつか探しましたが、あまり見つかりませんでした。

誰かが似たようなことをしましたか?

ありがとう!

4

1 に答える 1

9

このアプローチをお勧めします。XYは、小さな画像を配置する大きな画像上の座標です。メソッドのオーバーロードを確認できDrawImageます.30個ありますが、これがあなたのケースに最適だと思います:

Bitmap bigBmp = new Bitmap("bigBmp.png");
Bitmap smallBmp = new Bitmap("smallBmp.png");
Graphics g = Graphics.FromImage(bigBmp);

Rectangle destRect = new Rectangle(x, y, smallBmp.Width, smallBmp.Height);
Rectangle sourceRect = new Rectangle(0, 0, smallBmp.Width, smallBmp.Height);

g.DrawImage(smallBmp, destRect, sourceRect, GraphicsUnit.Pixel);
g.Dispose();

編集: KvanTTT のコメントに基づいて、DrawImageUnscaled画像を描画する最速の方法であるため、質問に別の解決策を追加することにしました。このメソッドには 4 つのオーバーロードがありますが、これは質問に一致する最も単純なものです。

Bitmap bigBmp = new Bitmap("bigBmp.png");
Bitmap smallBmp = new Bitmap("smallBmp.png");

Graphics g = Graphics.FromImage(bigBmp);
g.DrawImageUnscaled(smallBmp, x, y);
g.Dispose();
于 2012-10-22T22:15:53.820 に答える