gpt4 book ai didi

c# - 绘制和更新 PictureBox

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:58 27 4
gpt4 key购买 nike

我创建了一个简单的示例,用于绘制分配给 Picturebox 的图像。我处理 MouseDownMouseUp 事件,获取当前鼠标位置,并在 MouseUp 事件的末尾画一条线。

 private void Form1_Load(object sender, EventArgs e)
{
Bitmap image = new Bitmap("myImage.png");
pictureBox1.Image = image;
}

Point From, To;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
From = new Point(e.X, e.Y);
}

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLine(Pens.Red, From, To);
}

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
To = new Point(e.X, e.Y);
pictureBox1.Refresh();
}

代码有效,但它总是绘制在第一个初始图像上,我想绘制更新(在图像上创建的新行)。

我希望我的问题很清楚。

谢谢。

最佳答案

你可以试试这个,它对我有用:

Graphics graph = Graphics.FromImage(image);
if (e.Button == MouseButtons.Left)
{
graph.DrawLine(Pens.Red, From.X, From.Y, e.X, e.Y);
pictureBox1.Image = image;
}

此外,我建议您使用 MouseMove 事件,使线条更平滑(不知道这是不是您想要的,但无论如何),如下所示:

    int x, y;

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
Graphics graph = Graphics.FromImage(image);
if (e.Button == MouseButtons.Left)
{
graph.DrawLine(Pens.Red, x, y, e.X, e.Y);
pictureBox1.Image = image;
x = e.X;
y = e.Y;
}
}

希望我能帮到你:D

关于c# - 绘制和更新 PictureBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40321502/

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