c#在图片框上绘制一个矩形?

Ada*_*Ada 7 c#

我有很多图像和坐标,宽度和高度.将图片放入图片框中,然后发送坐标以在其上绘制矩形.面板上有许多图片框.

我将它们的路径发送到一个PicturePanel类,也有一些坐标和宽度/高度属性来绘制一个矩形.但是,我的问题是,它绘制它,并立即删除它.如果我没有在每个图像后面放一个消息框,我看不到矩形.这是代码;

if (IsRun())
{
    MessageBox.Show("rontool true");

    Rectangle ee = drawARectangle(xCoor, yCoor, MainScreen.tempR.wid / ratioOfx, MainScreen.tempR.heig / ratioOfy); // I wrote this, it only creates and returns the rectangle.
    //MessageBox.Show("x : " + xCoor + " y: " + yCoor + " width : " + (MainScreen.tempR.wid / ratioOfx) + " height: " + (MainScreen.tempR.heig / ratioOfy));
    using (Pen pen = new Pen(Color.Red, 2))
    {
        pictureBox.CreateGraphics().DrawRectangle(pen, ee);
       // e.Graphics.DrawRectangle(pen, ee);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是在

private void PictureBox_Paint(object sender, PaintEventArgs e). 
Run Code Online (Sandbox Code Playgroud)

for循环在另一个类中,创建一个picturebox,并初始化它的x,y等.但是,它绘制并立即删除它.或者有时甚至不画画.

如果我没有在每个图像后面放一个消息框,我甚至看不到矩形.你能帮助我吗?

Dar*_*ten 4

每当 Windows 希望您绘制图片框时,就会调用图片框绘制方法。看起来您有时只绘制矩形。

if (IsRun())
Run Code Online (Sandbox Code Playgroud)

更改您的代码以始终进行绘图。

即这段代码不会绘制矩形。本的例子将在哪里。

private bool _once = true;

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (_once)
            {
                Rectangle ee = new Rectangle(10, 10, 30, 30);
                using (Pen pen = new Pen(Color.Red, 2))
                {
                    e.Graphics.DrawRectangle(pen, ee);
                }
                _once = false;
            }
        }
Run Code Online (Sandbox Code Playgroud)