0

画像ボックスのサイズに応じて画像を生成し、サイズモードが通常の画像ボックスに画像を設定しますが、画像全体が表示されず、画像の一部の領域が切り取られています。画像ボックスに画像を設定すると、フル画像が表示されるように画像を生成したいと思います。ここに私が画像を生成する私のコードがあります

    new Bitmap _lastSnapshot = new Bitmap(261, 204);
    this.DrawToBitmap((Bitmap)_lastSnapshot, new Rectangle(Point.Empty, ((Bitmap)_lastSnapshot).Size));

261, 204 はピクチャ ボックスのサイズで、ピクチャ サイズ モードは通常です。生成後に lastSnapshot をピクチャ ボックスに割り当てますが、ピクチャ全体が表示されません。

画像ボックスのサイズに応じて画像のサイズを変更するルーチンを取得しました。それはうまく機能しますが、画像が不明瞭または不明瞭になります。画像を画像ボックスに埋めるには、画像ボックスサイズモードのストレッチを設定する必要があります。

これは、画像ボックスのサイズに応じて画像のサイズを変更するために使用するルーチンです。

public static Image ResizeImage(Image image, Size size, 
    bool preserveAspectRatio = true)
{
    int newWidth;
    int newHeight;
    if (preserveAspectRatio)
    {
        int originalWidth = image.Width;
        int originalHeight = image.Height;
        float percentWidth = (float)size.Width / (float)originalWidth;
        float percentHeight = (float)size.Height / (float)originalHeight;
        float percent = percentHeight < percentWidth ? percentHeight : percentWidth;
        newWidth = (int)(originalWidth * percent);
        newHeight = (int)(originalHeight * percent);
    }
    else
    {
        newWidth = size.Width;
        newHeight = size.Height;
    }
    Image newImage = new Bitmap(newWidth, newHeight);
    using (Graphics graphicsHandle = Graphics.FromImage(newImage))
    {
        graphicsHandle.InterpolationMode = InterpolationMode.HighQualityBicubic;
        graphicsHandle.DrawImage(image, 0, 0, newWidth, newHeight);
    }
    return newImage;
}

ルーチンを呼び出す

ResizeImage(value,pictureBox1.Size,true);

鮮明な画像で画像ボックスに収まるように画像を生成してサイズを変更するためのアドバイスを誰にでも与えることができますか。ありがとう

4

1 に答える 1