小さな画像がたくさんある大きな .PNG があります。大きな画像の一部を小さな画像に置き換えたい。したがって、X 座標と Y 座標では、画像のその部分が左上隅から置き換えられますが、元の画像の残りの部分はそのまま残ります。
MSDN の Graphics メソッドについて読んでいて、同様の例をいくつか探しましたが、あまり見つかりませんでした。
誰かが似たようなことをしましたか?
ありがとう!
このアプローチをお勧めします。X
とY
は、小さな画像を配置する大きな画像上の座標です。メソッドのオーバーロードを確認でき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();