C# GDI绘图—简单画板的实现

最近在学习这个,发现网络上C#很多相关的问答讲解上都不完整,耗费了时间还解决不了自己的问题。所以打算将自己学习过程中的一些东西上传来,分享给初学者们,大家一起勉励吧!(因为是面向初学者的交流,会写的啰嗦点,请见谅)

这里要用到的是​​G​r​a​p​h​i​c​s​类,所以各位在学习的时候要想看看这个相关的基础知识。

先讲解下大家会遇到的问题吧。

1.  画好后的图像在最小化之后玩玩会消失不见,其实这是因为最小化后再打开,窗体进行了重新绘制,所以这时候我们要恢复显示就要在窗体的OnPaint方法中重绘图片。

只要直接调用窗体的OnPaint事件即可。(如下)

         protected override void OnPaint(PaintEventArgs e)

        {

            base.OnPaint(e);

            //编写绘制图片程序

     }

注:OnPaint事件可以对控件或者图像进行重绘,一般出现最小化后打开消失问题可以直接将画图程序复制到这个事件当中即可。此外,这种方法也多用于对于按钮控件等进行重绘美工。

 

2.      如果采用上面这个重绘方法,那么我们就需要将每一次鼠标绘制时的信息都记录起来,这样的话数据太长,重绘也会比较麻烦,消耗资源。所以这里解决的方法是新建一个bitmap来作画,并将bitmap实时显示在容器当中(我这里直接使用了pictrueBox来显示,比较方便)。

 

好了,闲话少说,下面就是程序了 做好了注释,上面也有讲解,应该比较好理解了。

1.      新建一个项目,就form窗体,拖入pictrueBox跟两个button控件。如下

 

 

2.      主程序如下

3.  using System;

4.  usingSystem.Collections.Generic;

5.  usingSystem.ComponentModel;

6.  using System.Data;

7.  using System.Drawing;

8.  using System.Linq;

9.  using System.Text;

10. usingSystem.Threading.Tasks;

11. usingSystem.Windows.Forms;

12. usingSystem.Drawing.Imaging;

13.  

14. namespace paintBox

15. {

16.     public

  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
优化路径是指通过对路径进行优化,使其更加平滑,从而提高路径的质量和效率。在 C# 中,可以使用 GDI+ 来实现路径的优化。 首先,需要创建一个 GraphicsPath 对象,该对象用于存储路径信息。然后,通过调用 GraphicsPath 的 AddLine 或 AddCurve 方法,将路径的线段或曲线段添加到 GraphicsPath 中。接下来,可以使用 GraphicsPath 的 Flatten 或 Widen 方法来优化路径。 Flatten 方法将路径中的曲线段转换为线段,从而使路径更加平滑。Widen 方法则可以将路径进行扩展,从而使路径更加宽阔。可以根据实际需求选择使用哪种方法进行路径优化。 以下是一个简单的示例代码,演示了如何使用 GDI+ 实现路径的优化: ``` // 创建 GraphicsPath 对象 GraphicsPath path = new GraphicsPath(); // 添加路径线段 path.AddLine(0, 0, 100, 100); path.AddLine(100, 100, 200, 100); path.AddLine(200, 100, 300, 0); // 优化路径 path.Flatten(); // 在画布上绘制路径 Graphics graphics = this.CreateGraphics(); graphics.DrawPath(Pens.Black, path); ``` 上述示例代码创建了一个 GraphicsPath 对象,添加了条直线路径,并使用 Flatten 方法对路径进行优化。最后,使用 DrawPath 方法在画布上绘制优化后的路径。 需要注意的是,路径的优化是一个相对较慢的过程,如果需要对大量路径进行优化,可能会导致性能问题。因此,在实际应用中需要谨慎考虑路径优化的使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值