17.2 图形绘制3

server/2025/2/1 6:52:05/

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

17.2.4 Pen类

Pen类用于绘制线段和曲线。

Pen构造函数常用重载版本:

  1. Pen(Brush):使用指定的Brush初始化Pen类的新实例,此时宽度为1。
  2. Pen(Color):用指定颜色初始化Pen类的新实例,此时宽度为1。
  3. Pen(Brush,Single):使用指定的Brush和Width初始化Pen类的新实例。
  4. Pen(Color,Single):用指定的Color和Width属性初始化Pen类的新实例。

常用属性:

  1. Brush:获取或设置Brush,用于确定此Pen的特性。
  2. Color:画笔颜色。
  3. CustomEndCap:线段终点使用的自定义线帽。
  4. CustomStartCap:线段起点使用的自定义线帽。
  5. DashCap:用在短划线终点的线帽样式,这些短划线构成通过此Pen绘制的虚线。
  6. DashOffset:线段的起点到短划线图案起始处的距离。
  7. DashPattern:自定义的短划线和空白区域的数组。
  8. DashStyle:用于通过此Pen绘制的虚线的样式。
  9. EndCap:线段终点使用的线帽样式。
  10. LineJoin:通过此Pen绘制的两条连续线段的端点的联接样式。
  11. MiterLimit:斜接角上联接宽度的限制。
  12. PenType:获取用此Pen绘制的线段的样式。
  13. StartCap:线段起点使用的线帽样式。
  14. Width:画笔宽度,以用于绘图的Graphics对象使用的PageUnit 属性为度量单位。

【例 17.11【项目:code17-011】绘制和填充图形。

        Graphics gCanvas;

        private void Form1_Load(object sender, EventArgs e)

        {

            //使用窗体的CreateGraphics获得Graphics

            gCanvas = this.CreateGraphics();

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            //释放资源

            gCanvas.Dispose();

        }

        //绘制线段

        private void Button1_Click(object sender, EventArgs e)

        {

            //使用窗体背景色清除Graphics

            gCanvas.Clear(this.BackColor);

            //使用指定的颜色和宽度初始化画笔的新实例

            Pen myPen =new Pen(Color.Red, 2);

            //绘制线段

            gCanvas.DrawLine(myPen, new Point(10, 10), new Point(200, 200));

        }

        //绘制矩形

        private void Button2_Click(object sender, EventArgs e)

        {

            gCanvas.Clear(this.BackColor);

            //初始化蓝色画刷

            SolidBrush myBrush = new SolidBrush(Color.Blue);

            //使用指定的画刷和宽度初始化画笔的新实例

            Pen myPen = new Pen(myBrush, 2);

            //绘制矩形

            gCanvas.DrawRectangle(myPen, new Rectangle(10, 10, 200, 200));

        }

        //绘制椭圆

        private void Button3_Click(object sender, EventArgs e)

        {

            gCanvas.Clear(this.BackColor);

            //使用指定的颜色初始化Pen类的新实例, 此时宽度为1

            Pen myPen = new Pen(Color.Red);

            //绘制椭圆

            gCanvas.DrawEllipse(myPen, new Rectangle(50, 10, 150, 200));

        }

            //绘制扇形

        private void Button4_Click(object sender, EventArgs e)

        {

            gCanvas.Clear(this.BackColor);

            //初始化蓝色画刷

            SolidBrush myBrush = new SolidBrush(Color.Blue);

            //使用指定的画刷初始化Pen类的新实例, 此时宽度为1

            Pen myPen = new Pen(myBrush);

            //绘制扇形

            gCanvas.DrawPie(myPen, new Rectangle(50, 10, 150, 150), 90, 270);

        }

        //填充多边形

        private void Button5_Click(object sender, EventArgs e)

        {

            gCanvas.Clear(this.BackColor);

            //初始化蓝色画刷

            SolidBrush myBrush = new SolidBrush(Color.Blue);

            //多边形使用的点数组

            Point[] points = { new Point(10, 10), new Point(100, 10), new Point(250, 110), new Point(100, 210), new Point(10, 210)};

            //填充多边形

            gCanvas.FillPolygon(myBrush, points);

        }

        //填充矩形

        private void Button6_Click(object sender, EventArgs e)

        {

            gCanvas.Clear(this.BackColor);

            //初始化蓝色画刷

            SolidBrush myBrush = new SolidBrush(Color.Blue);

            //填充矩形

            gCanvas.FillRectangle(myBrush, new Rectangle(10, 10, 200, 200));

        }

        //填充椭圆

        private void Button7_Click(object sender, EventArgs e)

        {

            gCanvas.Clear(this.BackColor);

            //初始化红色画刷

            SolidBrush myBrush = new SolidBrush(Color.Red);

            //绘制椭圆

            gCanvas.FillEllipse(myBrush, new Rectangle(50, 10, 150, 200));

        }

        //填充扇形

        private void Button8_Click(object sender, EventArgs e)

        {

            gCanvas.Clear(this.BackColor);

            //初始化蓝色画刷

            SolidBrush myBrush = new SolidBrush(Color.Blue);

            //绘制扇形

            gCanvas.FillPie(myBrush, new Rectangle(50, 10, 150, 150), 90, 270);

        }

运行结果如下图所示:

图17-12 绘制和填充图形

学习更多vb.net知识,请参看vb.net 教程 目录

学习更多C#知识,请参看C#教程 目录

 


http://www.ppmy.cn/server/163997.html

相关文章

AI 浪潮席卷中国年,开启科技新春新纪元

在这博主提前祝大家蛇年快乐呀!!! 随着人工智能(AI)技术的飞速发展,其影响力已经渗透到社会生活的方方面面。在中国传统节日 —— 春节期间,AI 技术也展现出了巨大的潜力,为中国年带…

深入学习华为IPD流程之华为-PDT经理角色认知培训教材

本文介绍了PDT经理的角色认知,包括其在IPD体系中的位置、基本角色定位、关键管理活动、能力模型和评估方法以及培养路径。文章指出PDT经理是重量级产品开发团队的管理者,负责产品的商业成功和跨功能部门合作,通过绩效管理加强团队凝聚力,对商业结果负责。 重点内容: 1. …

Spring Boot 日志:项目的“行车记录仪”

一、什么是Spring Boot日志 (一)日志引入 在正式介绍日志之前,我们先来看看上篇文章中(Spring Boot 配置文件)中的验证码功能的一个代码片段: 这是一段校验用户输入的验证码是否正确的后端代码&#xff0c…

Hive数据仓库中的数据导出到MySQL的数据表不成功

可能的原因: (1)没有下载flume和sqoop (2)权限问题:因为MySQL 数据库拒绝了 root 用户从 hadoop3 主机的连接请求,root 用户没有从 hadoop3 主机进行连接的权限 解决:通过 MySQL 的授权命令来授予权限 mysql> GRANT ALL PR…

【C++】特殊类设计

目录 一、请设计一个类,不能被拷贝二、请设计一个类,只能在堆上创建对象三、请设计一个类,只能在栈上创建对象四、请设计一个类,不能被继承五、请设计一个类,只能创建一个对象(单例模式)5.1 饿汉模式5.2 懒汉模式 结尾…

【java学习笔记】@Autowired注解 使用方法和作用 | 配合@Component注解使用 | IOC控制反转

原本在类中,要用什么对象,就直接new一个对象。这种原始的方式 是由应用本身去控制实例的。 用了Autowired注解后,就相当于把实例(对象)的控制权 交给外部容器来统一管理(降低耦合)。&#xff08…

大模型应用的10个架构挑战

[引] 在英国,时差有点乱。拾起年初的文字,迎接新春大吉! ChatGPT从正式发布到拥有1亿用户仅仅用了5天的时间,基于大型语言模型(简称大模型,或基础模型)的应用给软件行业乃至整个社会带来巨大的影…

【实践】Python实现气象数据分析与可视化

一、项目需求 在本节中,我们将明确“气象数据分析与可视化”项目的需求,定义项目的功能和目标,为后续的实现奠定基础。通过本项目,读者将学习如何使用Python的各种数据处理和可视化工具来分析和展示气象数据,从而掌握…