通过图形改变图像不会以形式呈现

Altering Image via Graphics wont render in form

我正在使用以下代码尝试在图片框内的图像上绘制,但是更改并未呈现在表单本身上。

    private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (drawMode)
            {
            Graphics g = Graphics.FromImage(pictureBox1.Image);
            RectangleF rectf = new RectangleF(10, 10, 100, 100);
            g.SmoothingMode = SmoothingMode.AntiAlias;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.PixelOffsetMode = PixelOffsetMode.HighQuality;
            g.DrawString("yourText", new Font("Tahoma", 22), Brushes.Green, rectf);
            g.Flush();
....

编辑:代码现在位于 picturebox1 对象的 PaintEventHandler 中。

我不太清楚你为什么要这样做,或者这是否正确。但通常情况下,您希望在 PictureBox...

Paint 事件中进行绘图
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    //draw here, but DONOT call the Invalidate method
}

如果您只想在表单收到一些用户输入(例如按钮单击)时进行绘图。使用布尔标志来确定在 Paint 事件中绘制的时间和内容。然后在按钮单击处理程序中,使 PictureBox

无效