C#中GDI+图形图像绘制(直线、矩形、圆、椭圆、圆弧、扇形、多边形)

目录

一、直线

二、矩形

三、椭圆

四、圆

五、圆弧

六、扇形

七、多边形

八、示例源码


一、直线

        调用Graphics类中的DrawLine()方法,结合Pen对象可以绘制直线。DrawLine()方法有以下两种构造函数。

  •         第一种用于绘制一条连接两个Point结构的线。当参数pt1的值小于pt2时,所绘制的线将逆向绘制。语法如下:
public void DrawLine(Pen pen,Point pt1,Point pt2)
☑ pen:Pen对象,它确定线条的颜色、宽度和样式。
☑ pt1:Point结构,它表示要连接的第一个点。
☑ pt2:Point结构,它表示要连接的第二个点。
  •         第二种用于绘制一条连接由坐标指定的两个点的线条。语法如下:
public void DrawLine (Pen pen,int x1,int y1,int x2,int y2)

参    数

说   明

pen

 Pen对象,它确定线条的颜色、宽度和样式

x1

 第一个点的x坐标

yl

 第一个点的y坐标

x2

 第二个点的x坐标

y2

 第二个点的y坐标

二、矩形

        通过Graphics类中的DrawRectangle()方法,可以绘制矩形图形。该方法可以绘制由坐标对、宽度和高度指定的矩形。当参数width和height的值为负数时,矩形框将不在窗体中显示。语法如下

public void DrawRectangle (Pen pen,int x,int y,int width,int height)

参    数

说    明

pen

 Pen对象,它确定矩形的颜色、宽度和样式

X

要绘制矩形的左上角的x坐标

y

要绘制矩形的左上角的y坐标

width

要绘制矩形的宽度

height

要绘制矩形的高度

三、椭圆

        通过Graphics类中的DrawEllipse()方法可以轻松地绘制椭圆。此方法可以绘制由一对坐标、高度和宽度指定的椭圆。语法如下:

public void DrawEllipse(Pen pen,int x,int y,int width,int height)

参    数

说   明

pen

   Pen对象,它确定曲线的颜色、宽度和样式

X

   定义椭圆边框左上角的x坐标

y

   定义椭圆边框左上角的y坐标

width

   定义椭圆边框的宽度

height

   定义椭圆边框的高度

        在设置画笔(pen)的粗细时,如果其值小于等于0,那么,按默认值1来设置画笔的粗细。

四、圆

         画圆就是在正方形的空间里画内接的椭圆,所以还是使用Graphics类中的DrawEllipse()方法。

五、圆弧

        通过Graphics类中的DrawArc()方法,可以绘制圆弧。此方法可以绘制由一对坐标、宽度和高度指定的圆弧。语法如下:

public void DrawArc(Pen pen,Rectangle rect,float startAngle,float sweepAngle)

参    数

说    明

 pen

 Pen对象,它确定弧线的颜色、宽度和样式

 rect

 Rectangle结构,它定义圆弧的边界

startAngle

 从x轴到弧线的起始点沿顺时针方向度量的角(以度为单位)

sweepAngle

 从startAngle参数到弧线的结束点沿顺时针方向度量的角(以度为单位

六、扇形

        通过Graphics类中的DrawPie()方法可以绘制扇形。此方法可以绘制由一个坐标对、宽度、高度以及两条射线所指定的扇形。语法如下:

public void DrawPie(Pen pen,float x,float y,float width,float height,float startAngle,float sweepAngle)

        DrawPie()方法的参数说明如表

参   数

说    明

 pen

 Pen对象,它确定扇形的颜色、宽度和样式

 X

 边框的左上角的x坐标,该边框定义扇形所属的椭圆

 y

 边框的左上角的y坐标,该边框定义扇形所属的椭圆

 width

 边框的宽度,该边框定义扇形所属的椭圆

 height

 边框的高度,该边框定义扇形所属的椭圆

 startAngle

 从x轴到扇形的第一条边沿顺时针方向度量的角(以度为单位)

 sweepAngle

 从startAngle参数到扇形的第二条边沿顺时针方向度量的角(以度为单位)

七、多边形

        多边形是有3条或更多直边的闭合图形。例如,三角形是有3条边的多边形,矩形是有4条边的多边形,五边形是有5条边的多边形。若要绘制多边形,需要Graphics对象、Pen对象和Point(或PointF)对象数组。

  • Graphics对象提供DrawPolygon()方法。

        Graphics类中的DrawPolygon()方法用于绘制由一组Point结构定义的多边形。语法如下:

public void DrawPolygon(Pen pen,Point,points) 
☑ pen:Pen对象,用于确定多边形的颜色、宽度和样式。
☑ points:Point结构数组,这些结构表示多边形的顶点。
  • Pen对象存储用于呈现多边形的线条属性,例如宽度和颜色。
  • Point对象数组存储将由直线连接的点。

        如果多边形数组中的最后一个点和第一个点不重合,则这两个点指定多边形的最后一条边。

八、示例源码

//绘制:直线、矩形、圆弧、扇形、椭圆、圆、多边形
using System.Drawing.Drawing2D;

namespace _09_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Text = "直线";
            button2.Text = "矩形";
            button3.Text = "圆弧";
            button4.Text = "扇形";
            button5.Text = "椭圆";
            button6.Text = "圆";
            button7.Text = "多边形";
        }

        //使用graphics的DrawLine()方法画直线
        private void Button1_Click(object sender, EventArgs e)
        {
            Pen blackPen = new(Color.Black, 3);				//实例化Pen类
            Point point1 = new(50, 50);						//实例化一个Point类
            Point point2 = new(140, 50);					//再实例化一个Point类
            Graphics graphics = CreateGraphics();			//实例化一个Graphics类
            graphics.DrawLine(blackPen, point1, point2);	//调用DrawLine方法绘制直线
            
            Graphics graphics1 = CreateGraphics();			//实例化Graphics类
            Pen myPen = new(Color.Black, 3);				//实例化Pen类
            graphics1.DrawLine(myPen, 190, 30, 190, 100);	//调用DrawLine方法绘制直线
        }

        //调用Graphics对象的DrawRectangle方法画矩形
        private void Button2_Click(object sender, EventArgs e)
        {
            Graphics graphics = CreateGraphics();			//声明一个Graphics对象
            Pen myPen = new(Color.Black, 8);				//实例化Pen类           
            graphics.DrawRectangle(myPen, 240, 10, 190, 90);//画矩形
        }

        //调用Graphics对象的DrawArc方法绘制圆弧
        private void Button3_Click(object sender, EventArgs e)
        {
            Graphics ghs = CreateGraphics();				 //实例化Graphics类
            Pen myPen = new(Color.Black, 3);				 //实例化Pen类
            ghs.SmoothingMode = SmoothingMode.AntiAlias;//圆滑效果优化
            Rectangle myRectangle = new(350, 20, 420, 90);   //定义一个Rectangle结构           
            ghs.DrawArc(myPen, myRectangle, 210, 120);       //绘制圆弧
        }

        //使用Graphics的DrawPie方法绘制扇形
        private void Button4_Click(object sender, EventArgs e)
        {
            Graphics ghs = CreateGraphics();
            Pen mypen = new(Color.Black, 3);
            ghs.DrawPie(mypen, 730, 20, 120, 100, 210, 120);
        }

        //使用Graphics 的DrawEllipse绘制椭圆
        private void Button5_Click(object sender, EventArgs e)
        {
            Graphics graphics = CreateGraphics();
            Pen myPen = new(Color.Black, 3);
            graphics.SmoothingMode = SmoothingMode.AntiAlias;//圆滑效果优化
            graphics.DrawEllipse(myPen, 970, 30, 100, 50);
        }

        /// <summary>
        /// 画圆就是在正方形里画内接椭圆
        /// 使用Graphics 的DrawEllipse方法在正方形空间里绘制圆
        /// </summary>
        private void Button6_Click(object sender, EventArgs e)
        {
            Graphics graphics = CreateGraphics();
            Pen myPen = new(Color.Black, 3);
            graphics.SmoothingMode = SmoothingMode.AntiAlias;//圆滑效果优化
            graphics.DrawEllipse(myPen, 1210, 5, 90, 90);
        }

        //调用Graphics对象的DrawPolygon方法绘制一个多边形
        private void Button7_Click(object sender, EventArgs e)
        {
            Graphics ghs = CreateGraphics();	//实例化Graphics类
            Pen myPen = new(Color.Black, 3);	//实例化Pen类
            Point point1 = new(1435, 20);		//实例化Point类
            Point point2 = new(1395, 50);
            Point point3 = new(1435, 80);
            Point point4 = new(1515, 80);
            Point point5 = new(1555, 50);
            Point point6 = new(1515, 20);
            Point[] myPoints =                  //创建Point结构数组
                { point1, point2, point3, point4, point5, point6 };
            ghs.DrawPolygon(myPen, myPoints);
        }
    }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/210086.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

你的身份信息是否被冒用,办了电话卡却毫不知情?

近日&#xff0c;公安部发布电信网络诈骗及其关联违法犯罪联合惩戒办法&#xff0c;向社会公开征求意见。 在征求意见稿中&#xff0c;非法买卖、出租、出借电话卡三张以上&#xff0c;假冒他人身份或者虚构代理关系开立电话卡等行为被列入惩戒。 为了防止自身利益受到侵害&a…

Chrome 拓展开发系列:什么是 Chrome 拓展?

文章目录 Chrome 拓展&#xff08;Chrome Extension&#xff09;是什么为什么使用 Chrome 拓展&#xff1f;个性化浏览体验提高工作效率改善隐私和安全创新新功能 发展历史2009 年&#xff1a;初版发布2010 年&#xff1a;稳步增长2013 年&#xff1a;Chrome App 和扩展合并201…

【计算机网络漫谈】OSI七层模型与TCP/IP四层(参考)模型

一、七层&#xff1f;四层&#xff1f; 1.为什么需要协议&#xff1f;2.OSI七层模型是干什么的&#xff1f;3.TCP/IP四层&#xff08;参考&#xff09;模型4.TCP/IP&#xff08;参考&#xff09;模型与OSI七层模型有什么异同&#xff1f; 二、自底向上的网络分层 1. 物理层2…

6.7 Windows驱动开发:内核枚举LoadImage映像回调

在笔者之前的文章《内核特征码搜索函数封装》中我们封装实现了特征码定位功能&#xff0c;本章将继续使用该功能&#xff0c;本次我们需要枚举内核LoadImage映像回调&#xff0c;在Win64环境下我们可以设置一个LoadImage映像加载通告回调&#xff0c;当有新驱动或者DLL被加载时…

光伏测算工具能测量哪些数据?

光伏测算工具在光伏电站的设计和规划过程中起着至关重要的作用。它们可以测量并分析一系列关键数据&#xff0c;以确保光伏电站的顺利建设和高效运营。本文将详细介绍光伏测算工具能测量的主要数据。 一、太阳能资源评估 光伏测算工具可以对场地的太阳能资源进行评估。这包括测…

C++模版

文章目录 C模版1、泛型编程2、函数模版2.1、函数模版概念2.2、函数模版格式2.3、函数模版原理2.4、函数模版的实例化2.5、模板参数的匹配原则 3、类模版3.1、类模版概念3.2、类模版格式3.3、类模板的实例化 C模版 1、泛型编程 泛型编程&#xff08;Generic Programming&#x…

html个人简历网页版源码

文章目录 1.个人简历1.1 简历风格1 - 纯净版1.2 简历风格2 - 蓝色版1.2 简历风格3 - 粉色心动版 源码目录结构源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134752070 html个人简历网页版源码&#xff0c;好看…

SpringBoot整合JavaMail

SpringBoot整合JavaMail发一个简单邮件 文章目录 SpringBoot整合JavaMail发一个简单邮件导入坐标配置写客户端 SpringBoot整合JavaMail发多部件邮件 导入坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starte…

SEO插件,免费的SEO插件大全

SEO插件的作用 让我们来谈谈SEO插件的作用。SEO插件是一种能够在网站建设和管理过程中&#xff0c;提供全方位、智能化SEO服务的工具。它们通常嵌入在网站后台&#xff0c;为站长提供了诸如关键词优化、页面结构调整、外链管理等一系列强大功能&#xff0c;帮助站长更好地适应…

【数电笔记】最小项(逻辑函数的表示方法及其转换)

目录 说明&#xff1a; 逻辑函数的建立 1. 分析逻辑问题&#xff0c;建立逻辑函数的真值表 2. 根据真值表写出逻辑式 3. 画逻辑图 逻辑函数的表示 1. 逻辑表达式的常见表示形式与转换 2. 逻辑函数的标准表达式 &#xff08;1&#xff09;最小项的定义 &#xff08;2&am…

一篇短文让你彻底理解什么是逻辑门电路

一、门电路概述 门电路&#xff1a;实现基本运算、复合运算的单元电路&#xff0c;如与门、与非门、或门… 注意&#xff1a;门电路中以高/低电平表示逻辑状态的1/0 正逻辑与负逻辑&#xff1a; 正逻辑&#xff1a;高电平表示1、低电平表示0 负逻辑&#xff1a;高电平表示0、低…

2022-06-17 github 访问慢的解决办法 - 手动添加hosts

访问https://hosts.gitcdn.top/hosts.txt 将网页的全部内容粘贴到你电脑的hosts文件中 在系统中找到 hosts 文件 Window&#xff1a;C:\Windows\System32\drivers\etc\hosts 或 Linux&#xff1a;/etc/hosts

Hdoop学习笔记(HDP)-Part.12 安装HDFS

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

Embedding And Word2vec

Embedding与向量数据库&#xff1a; Embedding 简单地说就是 N 维数字向量&#xff0c;可以代表任何东西&#xff0c;包括文本、音乐、视频等等。要创建一个Embedding有很多方法&#xff0c;可以使用Word2vec&#xff0c;也可以使用OpenAI 的 Ada。创建好的Embedding&#xff…

IDEA下载和安装

IDEA的下载和安装 一、概述 IDEA全称IntelliJ IDEA&#xff0c;是用于Java语言开发的集成环境&#xff0c;它是业界公认的目前用于Java程序开发最好的工具。 集成环境&#xff1a;把代码编写&#xff0c;编译&#xff0c;执行&#xff0c;调试等多种功能综合到一起的开发工具…

论文阅读 - LoRA: Low-Rank Adapatation of Large Language Models

论文链接 arxiv&#xff1a; 论文目标与背景 大语言模型有很好的性能&#xff0c;在对接下游任务&#xff08;DownStream&#xff09;完成大语言模型的微调 主要方法 &#xff1a;冻结预训练模型的权重&#xff0c;插入可训练的秩分解矩阵到Transformer结构的每一层&#…

Facebook做外贸推广如何?

Facebook作为全球最大的社交媒体平台之一&#xff0c;同时也拥有着庞大的流量以及用户&#xff0c;基于这些数据更是吸引着不少的跨境电商卖家选择此平台进行推广营销&#xff0c;那么Facebook做外贸推广到底如何呢&#xff1f;下面小编对此讲讲吧&#xff01; 1、全球覆盖流量…

Spring Boot统一异常处理 Spring拦截器

小编在前文中向大家描述了Spring AOP的相关内容&#xff1a;Spring AOP-CSDN博客感兴趣的各位老铁可查看一下&#xff01;&#xff01; 那么&#xff0c;我们本文主要是代理搭建来实现一个Spring Boot统一功能处理模块了&#xff0c;当然&#xff0c;这个也是Spring AOP的实战环…

SQL Server 2016(为数据表Porducts添加数据)

1、实验环境。 某公司有一台已经安装了SQL Server 2016的服务器&#xff0c;并已经创建了数据库PM。 2、需求描述。 在数据库PM中创建表products&#xff0c;"编号"列的值自动增长并为主键。然后使用T-SQL语句为表格插入如下数据。 3、实验步骤。 1、使用SSMS管理工…

第九节HarmonyOS 常用基础组件1-Text

一、组件介绍 组件&#xff08;Component&#xff09;是界面搭建与显示的最小单位&#xff0c;HarmonyOS ArkUI声名式为开发者提供了丰富多样的UI组件&#xff0c;我们可以使用这些组件轻松的编写出更加丰富、漂亮的界面。 组件根据功能可以分为以下五大类&#xff1a;基础组件…
最新文章