繁体   English   中英

C#使用Graphics.DrawImage保持绘制的图像

[英]C# keep drawed images with Graphics.DrawImage

我试图通过点击事件在面板上绘制图像。我设法做到这一点,但我想保留生成的图像。每次点击后,先前生成的图像消失。如何保留所有绘制的图像? 这是我的代码,直到现在:

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方法,只需在单击对象时将新项添加到列表中,您应该很高兴。 我不知道你是否可以进入一些竞争条件的情况,当有人点击它试图在所有点上绘制但如果是这样的话就很容易处理

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM