c# - 如何在带有图像的面板上绘制点

标签 c# winforms

我有一个名为 dPanel 的面板。我用名为 dImage 的图像设置该面板的背景图像。现在我想在面板上绘制点,换句话说,我想使用鼠标为面板着色。我希望能够将绘图和图像一起保存之后。我的代码执行此操作,但图片在绘图过程中亮起并且速度非常慢。这是我的代码:

 private void drawP_MouseDown(object sender, MouseEventArgs e)
    {
        if (!drawbool)
        {
            dStartPoint = e.Location;
            drawbool = true;
        }
        drawP.Invalidate();
    }
 private void drawP_MouseMove(object sender, MouseEventArgs e)
    {
        if (drawbool)
        {
            dStartPoint = e.Location;
            drawP.Invalidate();
        }
    }
 private void drawP_MouseUp(object sender, MouseEventArgs e)
    {
        if (drawbool)
        {
            drawbool = false;
        }
    }
  private void drawP_Paint_1(object sender, PaintEventArgs e)
    {
        if (drawbool)
        {
            int dStartX = dStartPoint.X;
            int dStartY = dStartPoint.Y;
            e.Graphics.DrawEllipse(dP, dStartX, dStartY, 2, 2);
            Bitmap dPPB = new Bitmap(drawP.Width, drawP.Height);
            drawP.DrawToBitmap(dPPB, new Rectangle(0, 0, drawP.Width, drawP.Height));
            drawP.BackgroundImage = (Image)dPPB;
        }
    }

Whani 是解决方案吗?提前致谢。

最佳答案

看看这个关于在面板上绘图的好例子:Painting on a Panel .

稍后您可以通过调用面板的方法 DrawToBitmap 来保存您的绘图。

关于c# - 如何在带有图像的面板上绘制点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8427542/

相关文章:

c# - .Net 是否有支持 html5 视频(WebRTC)的 Webbrowser 控件?

c# - 字符串数组为大型多行条目抛出 OutOfMemoryException

C# 4.0 规范测试版?

c# - 如何将日期正确转换为 UTC,然后再将其转换回来?

C# 在拖放时在 ListView 中实现自动滚动

C# 将正则表达式匹配插入数据表

c# - 将 DataGridView 绑定(bind)到 DataTable,但还包括 ComboBox 作为最后一列

c# - 如何在 WP7 应用程序中循环显示多个图像?

c# - 为什么 Object.Equals(new Object(), new Object()) 是假的?

c# - 在 Visual Studio 中删除应用程序文件