gpt4 book ai didi

c# - 在图片框内创建矩形绘图

转载 作者:太空宇宙 更新时间:2023-11-03 19:59:19 26 4
gpt4 key购买 nike

按钮单击事件后,我希望程序在图片框内绘制一个矩形。我不知道该怎么做。到目前为止,我只在图片框外制作了一个矩形,如 this .之后我想实现一个泛洪填充算法来用一种颜色填充矩形。这就是为什么我必须在那里放置这些位图的原因。

namespace howto_floodfill
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

// The background image.
private Bitmap bm;
private Bitmap32 bm32;

// Make a rectangle

private void button1_Click(object sender, EventArgs e)
{
bm = new Bitmap(ClientSize.Width, ClientSize.Height);
using (Graphics gr = Graphics.FromImage(bm))
{
gr.Clear(Color.Silver);
gr.DrawRectangle(Pens.Black, 5, 5, 100, 60);
}

bm32 = new Bitmap32(bm);

this.BackgroundImage = bm;
}

}
}

最佳答案

您可以为 PictureBox 设置一个 Paint 事件处理程序,这样您就可以在 PictureBox 内容的顶部进行绘制:

public partial class Form1 : Form
{

private bool _drawRectangle = false;

public Form1()
{
InitializeComponent();
pictureBox1.Paint += new PaintEventHandler(this.pictureBox1_Paint);
}

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (_drawRectangle) {
Graphics g = e.Graphics;
// use g to do your drawing
}
}
}

只需在按钮单击处理程序中将 _drawRectangle 设置为 true 并调用 pictureBox1.Invalidate()。在 Paint 事件处理程序中进行绘图可确保每当重绘 PictureBox 时(例如,因为另一个窗口位于其上方),您的矩形也会被绘制。

这将使您可以在 PictureBox 的内容上绘制一个矩形。您是否考虑过使用 FillRectangle 而不是洪水填充算法? ?

如果您真的想进行洪水填充,则必须像您已经在做的那样处理图像,这样您就可以从图像中读取像素以了解是否已达到边界。然后,您可以使用生成的位图设置 PictureBox 的 Image 属性。 (在这种情况下,没有必要在 Paint 事件处理程序中完成图形工作,因为 PictureBox 将确保在每次绘制时绘制其 Image。 )

关于c# - 在图片框内创建矩形绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29992010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com