CSharp代码示例每日一讲: 在GDI+中使用画笔和画刷

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

CSharp代码示例每日一讲,为刚刚学习编程的人准备,利用最简单的代码介绍CSharp编程知识!

画笔和画刷是图形应用中最常用的两种对象。笔用于绘制图形对象的轮廓,如线条和曲线;刷子是用来填充图形对象的内部区域(例如,填充矩形或椭圆形)。在本文中,我们将讨论如何创建和使用各种类型的画刷和画笔。

我们首先讨论画刷、画笔的类型,它们的方法和属性,以及如何在GDI+中创建和使用它们。

GDI+提供Pen和Pens 类来表示和描述画笔。在本文中,我们将讨论如何使用Pen类及其属性创建不同种类的画笔,以及如何使用Pen类的方法。我们还将讨论如何添加 line caps, dash caps, line dash 样式,我们还将讨论笔和笔刷的转换。

SytemPens和system画笔类分别代表系统得画笔和画笔刷。我们也将讨论如何使用这些类来使用系统画笔和画刷。

理解和使用画刷对象

在.NET Framework库中,与brush相关的功能定义在两个名称空间:System.Drawing 和System.Drawing.Drafwing2D。System.Drawing 命名空间中定义和画刷相关的类和功能,System.Drawing.Drawing2D名称空间定义了高级的与brush相关2D的功能。

例如,在System.Drawing 命名空间中定义有SolidBrush类, TextureBrush类, and Brushes类,而2D高级功能的类 HatchBrush 类 、GradientBrush在System.Drawing.Drawing2D中。.

在使用画刷(Brush)之前,显然必须将相应的命名空间包含到应用程序中。或者,您可以使用名称空间作为类的前缀。

下面的代码片段创建一个红色的SolidBrush对象并使用它绘制矩形。此代码写在窗体的paint事件上。第一行获取窗体的绘图对象,第二行使用SolidBrush类创建画笔,后者稍后用于填充矩形。最后一行处理SolidBrush对象。

Graphicsg = e.Graphics;SolidBrushredBrush =newSolidBrush(Color.Red);Rectanglerect =newRectangle(150, 80, 200, 140);g.FillRectangle(redBrush, rect);redBrush.Dispose();

画刷类Brush

在.net框架库中,画刷Brush类是一个抽象类,这意味着如果你不使用它的子类,就不能创建它的实例。所有可用的画刷类都继承自抽象的画刷类。下图显示了可以在GDI+应用程序中使用的所有brush派生类。

应用程序通常需要调用适当的图形类的填充方法,使用画刷来填充GDI+对象(如椭圆、拱形或多边形)。GDI+提供了四种不同的画刷:solid实心, hatch, texture, and gradient。下图显示了画刷类型及其类。

The Brushes 画刷类

brushes类是一个封闭的类(不能继承)。画笔提供了超过140个静态属性,每个属性代表一个带有特定颜色(包括所有标准颜色)的画画刷。例如:Color.Red 代表红色画刷。

创建画刷对象:

SolidBrushredBrush =newSolidBrush(Color.Red);SolidBrushgreenBrush =newgreenBrush(Color.Red);SolidBrushblueBrush =newblueBrush(Color.Red);

SolidBrush只有一个颜色属性,它表示画刷的颜色。

下面代码,使用红色、绿色和蓝色的单色画刷,并分别使用图形类的FillEllipse、FillPie和fill矩形方法填充椭圆、饼图和矩形。

Graphicsg = e.Graphics;//创建Solid画刷对象//使用红色、绿色、蓝色SolidBrushredBrush =newSolidBrush(Color.Red);SolidBrushgreenBrush =newSolidBrush(Color.Green);SolidBrushblueBrush =newSolidBrush(Color.Blue);//使用红色填充ellipseg.FillEllipse(redBrush, 20, 40, 100, 120);//蓝色画刷填充方框Rectanglerect =newRectangle(150, 80, 200, 140);g.FillRectangle(blueBrush, rect);//绿色画刷填充饼形g.FillPie(greenBrush, 40, 20, 200, 40, 0.0f, 60.0f);//释放绘图资源redBrush.Dispose();greenBrush.Dispose();blueBrush.Dispose();

效果如下图:

结论

希望这篇文章能帮助您理解如何使用GDI+中的画刷和画笔,任何意见请留言。

欢迎关注我的大鱼号:程序你好
微信公众号:codinghello

C# GDI绘图—简单板的实现 最近在学习这个,发现网络上C#很多相关的问答解上都不完整,耗费了时间还解决不了自己的问题。所以打算将自己学习过程中的些东西上传来,分享给初学者们,大家起勉励吧!(因为是面向初学者的交流,会写的啰嗦点,请见谅) 这里要用到的是​​G​r​a​p​h​i​c​s​类,所以各位在学习的时候要想看看这个相关的基础知识。 先解下大家会遇到的问题吧。 1.  好后的图像在最小化之后玩玩会消失不 阅读详情

相关推荐

用PNG透明图片GDI+做不规则透明窗体"异形窗口"

、准备工作(PNG图片透空窗体) 1、图片资源准备工作。首先在Photoshop中编辑所用图片,将这些图片保存成为带透明通道的.png格式(GDI+调用显示时能够透明调背景)。这样程序中图片资源就准备好了。 2、下面开始做好展开此项工作的基本准备工作。创建个对话框应用程序,名称为Gdi+PNG在VC6.0下的设置:(1)、下载gdiplus forVC6.0的SDK,(总共两兆多)(2)、

脑袋不好使 1050

C# GDI创建自定义进度条

首先大家在使用微软自带的ProgressBar控件的话,效果太差,找不到自己想要的效果,现在我来教大家如何创建自定义的控件,废话不多说贴教程; 1.首先创建个自定义控件 2.复制如下代码,更改参数 private int _Max;//进度条的最大值 private int _Mth;//进度条现在的值 public int MaxValue

听雨小筑 1948

C#中的GDIGDI+(Graphics Device Interface Plus)图形设备接口

GDI(Graphics Device Interface)是微软Windows操作系统中的个组件,它提供了组API,用于在显示器或打印机等图形设备上进行图形绘制图像处理。GDI 是 Windows 编程中用于。

去追随使你安宁的东西,去做你觉得有用的事情 2575

C# GDI+ 简单的图形:直线、矩形、扇形等

GDI+种绘图装置接口,  当拖动窗体是,窗体发生移动,window默认为从窗体移动到另个地方,先发生擦除后再重新个窗体; 而我们自己动手的图(如下面的线),不会重新;在属性中,Paint,中,将图的程序重新写遍就可实现重条线         private void button1_Click(object sender, EventArgs e)

有塔耶奥多的专栏 1万+

C#中GDI+

绘图程序的设计般分为两个步骤: ()创建Graphics对象; (二)使用创建的Graphics对象的方法绘图、显示文本或处理图像。 创建Graphics对象 方法名称 说明 DrawArc 弧形 DrawBezier 立体的贝尔赛曲线 DrawClosedCurve 闭合曲线 DrawCurve 曲线 DrawEllipse 椭圆 DrawIma...

dust__的博客 3838

Csharp学什么

使用CSharp语言已经有几年的历史,有些新的学习者经常有各种各样的问题,在此就个观点大家交流下:1、  CsharpJava 哪个会更有前途,或者学Csharp好还是学java好。我的个人观点是Csharpjava都是编程工具。程序员没有必要考虑太多二者的优劣,但是好的程序员还是要两个都能有定程度的掌握,当你工作以后具体使用的工具领域是你的工作决定的。JavaCsharp都是好

Frankie 1万+

GDI + 绘图编程轻松入门

基础二维绘图(Windows Forms 应用)。高级图形效果(渐变、变换、抗锯齿)。图像处理(滤镜、格式转换、像素操作)。Windows Forms 应用中的自定义绘图。WPF 应用中的现代 UI 设计效果。精细控制文本渲染质量。文档打印功能。应用场景:Windows 桌面应用、GDI + 绘图、GUI 界面开发等。定义原点位置:屏幕左上角(0, 0)。坐标轴方向X 轴:从左向右递增。Y 轴:从上向下递增(数学坐标系相反)。单位:像素(Pixel),显示器分辨率直接相关。

2301_79760264的博客 917

GDI+GDI区别以及些新特征

GDI+GDI】 -- 都是硬件加速的 1. GDI+GDI的下个版本,它进行了很好的改进,并且易用性更好。 GDI个好处就是你不必知道任何关于数据怎样在设备上渲染的细节,GDI+更好的实现了这个优点, 也就是说,GDI个中低层API,你还可能要知道设备,而GDI+个高层的API,你不必知道设备。 2. GDI是有状态的,而GDI+是无状态的。 3. GDI绘图要使用...

weixin_34026276的博客 324

(重点)C#/Csharp桌面应用开发小作业小程序,测距仪,圆,GDI圆,直线,绘制圆,绘制直线,绘制虚线,dashpattern的应用

简介 这次试验具有定难度,因为我们对于C#得板接触得比较少,但是我认为老师很可能在考试的时候在这上面大出文章,所以这个实验我会详细的解析C#的GDI+ 首先,我们要图形,就要调用Paint方法,如果在MouseMove里面,那么在鼠标移动的时候就会,同时出现很多个我们想要的东西,但是这次练习要求只要五个东西,第个是MouseDown的时候,我们获得此时鼠标点击的坐标,同时我们鼠标移动,边移动鼠标的坐标也在不断得变化,就如上文所说,如果在MouseMove这个方法里面图形,那么随着鼠标

qq_43540629的博客 2639

C#/Csharp,通过GDI+知识,在窗体上绘制彩虹

简介 应用软件的Loading界面是个软件的重要组成部分。请利用所学的GDI+知识,通过在窗体上绘制彩虹的方式,完成个儿童学习类软件的Loading界面,功能要求如下所示: 软件需求及编码提示:  该软件只需要个窗体,该窗体标题为:“彩虹绘制—2017XXXXXXX”。请依据你的情况填写你的真实学号。  设置窗体的双缓存为true,避免绘图是,窗体闪烁。(找到主窗口的DoubleBuffered,把它属性改为true)  添加Form_Paint事件,在该事件中,获取Graphics对象,对应

qq_43540629的博客 1989

GDI+:如何绘制透明色

在利用GDI+绘制图形的时候,有时我们需要绘制透明的颜色。那么应该如何来实现这样的需求呢下面我写了个简单的例子 private void bt_Click(object sender, EventArgs e) { Graphics g = this.CreateGraphics(); Color c = Color.FromArgb(50, 244, 23, 45);//第个参数是设置alpha通道值,也就是不透明度。

陈希章@中国 2012

GDI+编程基础(1)

GDI+所包含的内容来看,它主要由以下几方面构成:二维几何图形的处理     矢量图形由图元(如直线、曲线轮廓等)组成,图元由坐标中的组点来制定。GDI+的Rectangele类用于存储个矩形的位置尺寸;Pen类存储了线条颜色、线宽线条风格的信息;Graphics类拥有用于绘制直线、矩形及其他图形的方法;还有几个Brush类存储了怎么用颜色来填充闭合图形路径。 显示图

evil_csharp的专栏 550

c#样条曲线命令_CSharp-GDIP-Besizer-Line C# GDI+ 经典绘制样条曲线(CAD完全样) - 下载 - 搜珍网...

Nurbs曲线/Nurbs曲线/Backup/bin/Debug/comres_1_2857.icoNurbs曲线/Nurbs曲线/Backup/bin/Debug/cristal-system-23[1].pngNurbs曲线/Nurbs曲线/Backup/bin/Debug/Rotate.icoNurbs曲线/Nurbs曲线/Backup/bin/Debug/score.ico...

weixin_34374031的博客 463

Csharp: 打印設置字符之間的間距

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Drawing.Imaging; 7 using System.Drawing.Printing; ...

weixin_33813128的博客 308

Csharp窗体应用实例

文件操作学习 例1. 显示当前计算机上所有驱动盘的相关信息 using System.IO; //.NET类库的**System.IO**命名空间提供了完整的对文件流的访问支持。 private void button1_Click(object sender, EventArgs e) { DriveInfo[] drives=DriveInfo.GetDrives(); for(int i=0; i&lt

weixin_51132606的博客 1492

Csharp: print Card using HiTi CS310

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using Sy...

weixin_33829657的博客 128

csharp,c#,gdi+绘制米字框

刚开始想要将绘制米子框跟主form1隔离开来写,主要是为了事务分离,想在tianZiKuang.cs文件里面定义个绘制米子框的方法drawTianZiKuang(paintargs e),然后在主form里面new个新对象,在引用该新对象的绘制方法,结果百般纠结就是绘制不了。咨询了些人,说on_paint()方法得定义到面板里也就是form里,这样才能绘制,不知道是不是必须这么写?忘看到的人...

weixin_34268843的博客 134
上一篇: 如何比较一个List对象Java 7 vs Java 8
下一篇: 软件设计原则——DRY(Dont Repeat Yourself)和KISS( Keep It Simple, Stupid)
codinghello
博客等级 码龄25年 47粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值