如何保持图像绘制在图片框中

本文关键字:何保持 图像 绘制 | 更新日期: 2023-09-27 17:56:20

大家好,C#.Net的新人。

我正在尝试制作像 Ms Paint 这样的应用程序,当然要简单得多,但我被卡住了。

问题是这个。

在pictureBox中,我在PictureBox上绘制网格线,之后我正在读取.map(Mapper3文件)并想在网格线上绘制,但是当我绘制地图时,网格线消失了。

我认为问题是因为在我绘制地图时图片框图像变为空。我该如何克服这一点,有什么技巧吗?

感谢您从现在开始的回复,对不起我的英语不好...

我最好的问候...

如何保持图像绘制在图片框中

你使用winforms吗?如果是,您实际上不需要工作区的图片框。我认为更合适的是表单或面板上的图形类。由于表单重绘圆圈,您丢失了线条,请将您的绘图代码放入表单油漆处理程序中,图片将在需要时重新绘制。在某些情况下,您可能需要手动触发重绘圆,为此,您应该使用表单的无效方法。

例如,将此代码添加到绘制处理程序:

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        // Drawing vertical lines
        for (int x = 5; x < this.ClientRectangle.Width; x+=5)
        {
            e.Graphics.DrawLine(Pens.Gray, new Point(x, 0), new Point(x, this.ClientRectangle.Height));
        }
        // Drawing horisontal lines
        for (int y = 5; y < this.ClientRectangle.Width; y += 5)
        {
            e.Graphics.DrawLine(Pens.Gray, new Point(0, y), new Point(this.ClientRectangle.Width,y));
        }
    }

您也可以通过以下方式在按钮单击处理程序中使用图形:

Graphics g = Graphics.FromHwnd(this.Handle);
g.FillEllipse(Brushes.Beige, new Rectangle(10, 10, 10, 10));

但是在这种情况下,您绘制的所有内容都将在表单的重绘圆圈中被删除,并且您必须在表单油漆处理程序中重新绘制它

[编辑]好的,例如,您的表单上有 pictureBox1,您可以通过这种方式在 Bitmap 类的帮助下轻松绘制它:

// Draw into bitmap
Bitmap bmp = new Bitmap(150, 150);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(Brushes.Green, new Rectangle(25, 75, 10, 30));
// Set bitmap into picture box
pictureBox1.Image = bmp;

在这种情况下,您无需重新绘制画作,画盒将为您完成。如果您更喜欢从图片框下方显示绘画,请不要忘记BackColor ot 图片框设置为 Transparent

每当绘制事件引发时,您都必须绘制所有内容,包括网格线,如果您担心性能,您可能会检测到剪切区域并仅绘制该部分。

祝你好运。