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

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

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

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

相关推荐

Abaqus梁模型仿真中的常见陷阱与优化策略

本文深入探讨了Abaqus梁模型仿真中的常见陷阱与优化策略,涵盖几何建模、材料属性设置、边界条件处理等关键环节。针对梁截面方向定义、网格划分、复合截面建模等典型问题,提供了实用的Python脚本示例和优化方案,帮助工程师避免计算错误并提升仿真精度。文章特别强调了动力分析中的网格密度要求和材料非线性考虑,为复杂工程应用提供专业指导。

weixin_29099217的博客 461

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

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

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

别再乱选离散化方法了!从零到一用Matlab对比差分、双线性Tustin和预矫正的实战效果

本文深入探讨了Matlab中四种主流离散化方法(差分、双线性Tustin和预矫正)的实战效果对比,帮助工程师在数字控制系统设计中做出明智选择。通过详细的理论分析和Matlab代码示例,展示了不同方法在稳定性、频率响应和计算复杂度上的差异,并提供了针对不同场景的工程选用指南。

weixin_28737603的博客 141

C# GDI创建自定义进度条

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

听雨小筑 1952

【Flink】FlinkSQL如何触发执行计算

Table (通过 StatementSet.addInsert() 输出给某个 Sink)和 INSERT 语句 (通过调用 StatementSet.addInsertSql())会先被缓存到 StatementSet 中,StatementSet.execute() 方法被调用时,所有的 sink 会被优化成一张有向无环图。该方法是用来将一个表的内容插入到目标表中,一旦该方法被调用, TABLE API 程序立即被翻译。该方法是用来执行一个 SQL 语句,一旦该方法被调用, SQL 语句立即被翻译。

一杯咖啡半杯糖的博客 1006

02 HCM CPI SF集成-组织集成(一)

将员工主数据和组织数据从SAP Successfactors Employee CentraI复制到SAPERP或SAP S/4HANA,SAP SF CPI HCM集成

SAP CPI 129

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

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

有塔耶奥多的专栏 1万+

[xboard-ok210] 44 s5pv210开发板介绍和对比

文章目录前言四大S3C6410提供商友坚开发板UT-S5PV210华天正(润尔)real210飞凌开发板ok210九鼎x210友善之臂开发板tiny210mini210smart210天嵌开发板tq210sate210xboardxboardxboard之ok210 前言 四大S3C6410提供商 友坚开发板 UT-S5PV210 华天正(润尔) real210 飞凌开发板 ok210 九鼎 x210 友善之臂开发板 tiny210 mini210 smart210 天嵌开发板 tq210 sate210

鹰之翔 286

C#的GDI画图

//在窗体重新绘制的时候,重新加载划线 private void Form1_Paint(object sender, PaintEventArgs e) { //创建GDI图像 Graphics graphics = this.CreateGraphics(); //创建画笔对象 ...

qq_29760029的博客 470

第110章 PCL PointCloudFusing 点云融合重建详细讲解

点云融合是指将多个不同视角、不同位置、不同传感器获取的点云数据进行合并,得到一个更加完整、准确的三维模型。多视角扫描:从多个相机或传感器获取点云数据,需要将这些数据融合成一个统一的三维模型。传感器融合:例如将激光雷达(LiDAR)点云与相机的图像数据融合,以便获得更高质量的三维重建。动态场景重建:动态环境中的物体,点云数据不断更新,如何平滑地融合这些点云是一个重要课题。点云融合的目标是将不同来源的点云数据准确地合并,消除冗余,减少噪声,并提高整体的点云密度和精度。

yumeiguo的博客 501

家用扫地机器人研发技术路线-第四部分:如何一步步做出来 | 4阶段 · 从原型到量产

摘要:本文详细介绍了扫地机器人从原型到量产的研发流程,分为4个关键阶段。首先聚焦四大技术难点:SLAM定位、AI视觉识别、仿生机械臂和静音风机系统。研发过程包括实验室原型验证、工程样机测试、小批量真实场景测试和量产导入四个阶段,每个阶段设有严格评审标准。特别强调测试贯穿全程,包括模块单元测试、整机集成测试、长期可靠性测试和多样化场景模拟,确保产品在上市前完成数百次真实环境验证。整个流程体现了从技术攻关到产品落地的系统性工程思维。

智能硬件研发,欢迎交流 191

Csharp学什么

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

Frankie 1万+

STM32串口控制LED灯的亮灭

STM32中的串口控制LED灯的亮灭,分为两种方式,一种是直接发送数字0和1来控制灯的亮灭,另一种是通过发送字符串来控制。 我所使用的开发板主控芯片是STM32F401RET6,主频84MHz, 首先要进行串口的初始化: /* 函数功能:串口的初始化 函数名:Usart_Init 返回值:无 参数:u32 brr 备注: USART1_TXD->PA9 USART1_RXD->PA10 */ void Usart_Init(u32 brr) { float div; u16 div

博客 2万+

GDI + 绘图编程轻松入门

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

2301_79760264的博客 924

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

GDI+和GDI区别以及一些新特征

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

weixin_34026276的博客 324

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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

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

qq_43540629的博客 2644

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

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

qq_43540629的博客 1995

GDI+:如何绘制透明色

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

陈希章@中国 2015

GDI+编程基础(1)

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

evil_csharp的专栏 552

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

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

weixin_34374031的博客 464

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的博客 1499

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的博客 130

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

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

weixin_34268843的博客 137
上一篇: 如何比较一个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、付费专栏及课程。

余额充值