0

私はC#での画像処理に比較的慣れていません。この動的に構築されたBMPを画像ボックスで拡大縮小しようとしていますが、画像のサイズがまったく変更されていません。BMPで画像ボックス全体を塗りつぶしてほしい。画像ボックスは555x555です。これは、BMPを元のサイズ(100 x 100)で表示しているだけです。何か案は?

private void Form1_Load(object sender, EventArgs e)
{
    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    Graphics gPB = e.Graphics;

    Bitmap bmp = new Bitmap(100, 100);
    Graphics gBmp = Graphics.FromImage(bmp);


    Brush whiteBrush = new SolidBrush(Color.White);
    gBmp.FillRectangle(whiteBrush, 0, 0, bmp.Width, bmp.Height);

    Brush redBrush = new SolidBrush(Color.IndianRed);
    gBmp.FillRectangle(redBrush, 0, 0, 20f, 20f);

    Brush greenBrush = new SolidBrush(Color.MediumSeaGreen);
    gBmp.FillRectangle(greenBrush, 20, 0, 20f, 20f);

    Brush blueBrush = new SolidBrush(Color.MediumSlateBlue);
    gBmp.FillRectangle(blueBrush, 0, 20, 20f, 20f);

    Brush yellowBrush = new SolidBrush(Color.LightYellow);
    gBmp.FillRectangle(yellowBrush, 20, 20, 20f, 20f);

    gPB.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height);

    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}

ZoomSizeModeも試しました。それは何の違いもありませんでした。

4

1 に答える 1

2

.NETのInterpolationプロパティを利用できます。ここを参照してください:http: //msdn.microsoft.com/en-us/library/system.drawing.graphics.interpolationmode.aspx

gPB.InterpolationMode = InterpolationMode.NearestNeighbor;
gPB.DrawImage(bmp, 0, 0, 555, 555);
于 2013-02-06T03:31:21.850 に答える