3

C# Drawing 名前空間を使用して、2 つの画像を並べて描画しようとしています。以下は、同じ高さの 2 つの画像があると仮定した非常に単純な例です。

Image[] oldImages = GetOldImages();

var newImage = new Bitmap(oldImages[0].Width + oldImages[1].Width, 800);

using (var newImageGraphics = Graphics.FromImage(newImage))
{
    newImageGraphics.DrawImage(oldImages[0], 0, 0);
    newImageGraphics.DrawImage(oldImages[1], oldImage[0].Width, 0);
    newImageGraphics.Save();
}

2 つの古い画像の解像度が同じであれば、これは問題なく機能します。

ただし、解像度が異なる場合、画像のサイズが変更され、問題が発生します。たとえば、最初の画像の解像度が異なる場合、2 番目の画像は正しく配置されません。

この問題を簡単に解決する方法を知っている人はいますか? 理想的には、元の画像を新しい画像に描画するときに、元の画像の高さと幅を同じままにしたいと考えています。

4

2 に答える 2

4

このトリックを試してください:

Bitmap picture_1 = new Bitmap(picture_1_path);
Graphics graphics = Graphics.FromImage(picture_1);
Bitmap picture_2 = new Bitmap(picture_2_path);
picture_2.SetResolution(graphics.DpiX, graphics.DpiY);

//Then do with pictures anything
于 2009-08-10T08:54:53.910 に答える
1

基本的に、新しい画像に追加する前に、2 番目の画像のサイズを変更する必要があります。

あなたが言うように、元の高さと幅を保持したいのですが、2番目の画像のキャンバスサイズを変更する必要があります. これにより、実際の画像の周りに空白が追加され、画像のサイズが大きくなります。2 番目の画像が最初の画像よりも大きい場合は、代わりに最初の画像に対してこれを行う必要があります。

于 2009-06-01T09:09:09.260 に答える