1

ファイルから画像をロードすることになっていますが、この画像はpictureBoxの80%をカバーし、そこに何かを描画する必要があります...ロードしても問題はありませんが、何かを描画しようとすると、不適切なパラメータを持つエラーがドロップされます(g.FillRectangle ...)。

スタックのアドバイスでpictureBoxを更新することを見つけましたが、何も変わりません...
そしてこれを解決する方法がわかりません...

private void button1_Click_1(object sender, EventArgs e)
{
    pictureBox1.Width = (int)(Width * 0.80);
    pictureBox1.Height = (int)(Height * 0.80);

    // open file dialog 
    OpenFileDialog open = new OpenFileDialog();
    // image filters
    open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
    if (open.ShowDialog() == DialogResult.OK)
    {
        // display image in picture box
        pictureBox1.Image = new Bitmap(open.FileName);
        // image file path
        //  textBox1.Text = open.FileName;
        g.FillRectangle(Brushes.Red, 0, 0, 20, 50);
        pictureBox1.Refresh();
    }
}
4

2 に答える 2

0

画像に描画するための使用法Graphics.FromImageまたは方法:Control.CreateGraphics

var img = new Bitmap(open.FileName);
using (Graphics g = Graphics.FromImage(img))
{
    g.FillRectangle(Brushes.Red, 0, 0, 20, 50);  
}
pictureBox1.Image = img;

PictureBoxまたは、イベントごとに直接描画しPaintます(たとえば、を使用してAnonymous Methods)。

pictureBox1.Paint += (s, e) => e.Graphics.FillRectangle(Brushes.Red, 0, 0, 20, 50);
于 2013-01-23T04:29:46.130 に答える
0

以下のコードは私にとってはうまく機能しています....同じことを試すことができますか

private void button1_Click(object sender, EventArgs e)
        {
            pictureBox1.Width = (int)(Width * 0.80);
            pictureBox1.Height = (int)(Height * 0.80);


            // open file dialog 
            OpenFileDialog open = new OpenFileDialog();

            // image filters
            open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
            if (open.ShowDialog() == DialogResult.OK)
            {
                // display image in picture box
                pictureBox1.Image = new Bitmap(open.FileName);
                // image file path
                //  textBox1.Text = open.FileName;
                Graphics g = Graphics.FromImage(pictureBox1.Image);
                g.FillRectangle(Brushes.Red, 0, 0, 20, 50);
                pictureBox1.Refresh();
            }
        }
于 2013-01-23T04:47:49.043 に答える