C# 用 Graphics.DrawImage 保留绘制的图像
C# keep drawed images with Graphics.DrawImage
我试图通过单击在面板上绘制图像 event.I 设法做到了,但我想保留每次单击生成的 images.After,之前生成的图像 disapears.How 我可以保留所有绘制的图像吗?
到目前为止,这是我的代码:
private void drawdot(object sender,PaintEventArgs e)
{
Image dot = Image.FromFile("dot.png");
var points = this.PointToClient(new Point(Cursor.Position.X-20, Cursor.Position.Y-30));
e.Graphics.DrawImage(dot, points);
}
private void grid2_Paint(object sender, EventArgs e)
{
if(started==true)
{
var points = this.PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y));
coord2.Add(points.ToString());
clickuri2++;
test2_puncte.Text = "Testul 2 | Puncte: " + clickuri2;
//draw
grid2.Paint -= drawdot;
grid2.Paint += drawdot;
grid2.Invalidate();
}
}
既然你要使整个网格重绘无效,你应该只使你刚刚重绘的部分无效。这是创建一个区域并将其作为参数传递给 grid2.Invalidate。大致看起来像这样:
System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
path.AddLines(points);
lvResults.Invalidate(new Region(path));
更新:
您还可以保留所有点击点的列表,并为每个新点调用一次 imagedraw 方法,只需在点击对象时向列表中添加一个新项目,您就可以开始了。我不知道你是否会遇到一些竞争条件场景,即有人在尝试绘制所有点时点击,但如果是这种情况,它会很容易处理
我试图通过单击在面板上绘制图像 event.I 设法做到了,但我想保留每次单击生成的 images.After,之前生成的图像 disapears.How 我可以保留所有绘制的图像吗? 到目前为止,这是我的代码:
private void drawdot(object sender,PaintEventArgs e)
{
Image dot = Image.FromFile("dot.png");
var points = this.PointToClient(new Point(Cursor.Position.X-20, Cursor.Position.Y-30));
e.Graphics.DrawImage(dot, points);
}
private void grid2_Paint(object sender, EventArgs e)
{
if(started==true)
{
var points = this.PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y));
coord2.Add(points.ToString());
clickuri2++;
test2_puncte.Text = "Testul 2 | Puncte: " + clickuri2;
//draw
grid2.Paint -= drawdot;
grid2.Paint += drawdot;
grid2.Invalidate();
}
}
既然你要使整个网格重绘无效,你应该只使你刚刚重绘的部分无效。这是创建一个区域并将其作为参数传递给 grid2.Invalidate。大致看起来像这样:
System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
path.AddLines(points);
lvResults.Invalidate(new Region(path));
更新:
您还可以保留所有点击点的列表,并为每个新点调用一次 imagedraw 方法,只需在点击对象时向列表中添加一个新项目,您就可以开始了。我不知道你是否会遇到一些竞争条件场景,即有人在尝试绘制所有点时点击,但如果是这种情况,它会很容易处理