C#(三十二)之Windows绘图

53 篇文章 1 订阅
22 篇文章 0 订阅

绘图相关的命名空间

System. Drawing:提供最基本的绘图功能(直线,椭圆等);

System. Drawing. Drawing2D;提供高级二维和矢量绘图功能(渐变、图片填充、轨迹等)。

System. Drawing .Imaging;命名空间提供图像处理功能;

System. Drawing. Text;命名空间提供排版功能;

System. Drawing. Printing;提供打印相关的服务;


像素和坐标系

构成图像的最小单位:像素。

坐标数不存在负数(Y轴向下也是正数);

**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HMPz96sk-1656122898483)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8bbf6f4ef8024deb88996ad0274fbb09~tplv-k3u1fbpfcp-zoom-1.image "1556851314357416.png")]**


颜色:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7KBvPSI7-1656122898490)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4d3bbfdee69c410994f7e5d3fa0f92be~tplv-k3u1fbpfcp-zoom-1.image "1556851416162478.png")]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KSZawqrJ-1656122898491)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/04bd72608d7e40c1a60e3d6cfe2abdc6~tplv-k3u1fbpfcp-zoom-1.image "1556851428756795.png")]


画图:

****Graphics ****对象表示 GDI+ 绘图表面,并且该对象是用于创建图形图像的对象。

只要画图,就需要定义 Graphics 对象。

创建一个用于画图的对象

Graphics g = this.CreateGraphics();

创建一个笔:两个参数(颜色,笔画粗细)

Pen pen = new Pen(Color.Red, 5);

设置划线起点和终点坐标

Point startPoint = new Point(50,50);
Point endPoint = new Point(400, 400);

画线

g.DrawLine(pen,startPoint, endPoint);

释放画线动作

g.Dispose();

释放笔

pen.Dispose();

实例:

/**
         * 画图按钮
         */
        private void huatu_Click(object sender, EventArgs e)
        {
            // 创建一个用于画图的对象
            Graphics g = this.CreateGraphics();
            // 创建一个笔
            Pen pen = new Pen(Color.Red, 5);
            // 设置划线起点和终点坐标
            Point startPoint = new Point(50,50);
            Point endPoint = new Point(400, 400);
            // 画线
            g.DrawLine(pen,startPoint, endPoint);
            // 释放画线动作
            g.Dispose();
            // 释放笔
            pen.Dispose();
        }

清除刚刚绘制的图像

Clear参数(将窗体背景清除成什么颜色);

/**
         * 清空按钮
         */
        private void qingchu_Click(object sender, EventArgs e)
        {
            // 创建一个用于画图的对象
            Graphics g = this.CreateGraphics();
 
            // 清除图像(参数:窗体背景颜色)
            g.Clear(BackColor);
        }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-URZ6OIzR-1656122898492)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f92407818c1b4e6d84c8c184308a9b20~tplv-k3u1fbpfcp-zoom-1.image "1556851648474748.png")]

Brush画刷的四个派生类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uE8kIIXO-1656122898493)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/42d651cfd85542289ee97bfdefd3d970~tplv-k3u1fbpfcp-zoom-1.image "1556851441870425.png")]

只要画图,就需要定义 Graphics 对象。

绘制椭圆:其实和画直线是一样的。都是确定两个点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zrB0HuA3-1656122898495)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5ee78134d45e492c952ed955a4b92a54~tplv-k3u1fbpfcp-zoom-1.image "1556851453431728.png")]

结合之前学过的委托,做了个画椭圆的小程序:

效果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mYRzbmAT-1656122898496)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/34840f5629a34c529e04619e5cc0f71a~tplv-k3u1fbpfcp-zoom-1.image
“1556851461266324.png”)]

测试使用全部代码:

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System. Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace huitu
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        /**
         * 画图按钮
         */
        private void huatu_Click(object sender, EventArgs e)
        {
            // 创建一个用于画图的对象
            Graphics g = this.CreateGraphics();
            // 创建一个笔
            Pen pen = new Pen(Color.Red, 5);
            // 设置划线起点和终点坐标
            Point startPoint = new Point(50,50);
            Point endPoint = new Point(400, 400);
            // 画线
            g.DrawLine(pen,startPoint, endPoint);
            // 释放画线动作
            g.Dispose();
            // 释放笔
            pen.Dispose();
        }
        /**
         * 清空按钮
         */
        private void qingchu_Click(object sender, EventArgs e)
        {
            // 创建一个用于画图的对象
            Graphics g = this.CreateGraphics();
            // 清除图像(参数:窗体背景颜色)
            g.Clear(BackColor);
        }
        // 定义委托
        public delegate void drawsss(object sender, EventArgs e);
        public static void runPlay(drawsss dong, object sender, EventArgs e)
        {
            dong(sender,e);
        }
        /**
         * 画椭圆
         */
        private void tuoyuan_Click(object sender, EventArgs e)
        {
            // 创建一个用于画图的对象
            //Graphics g = this.CreateGraphics();
            // 定义画刷
            //SolidBrush brush = new SolidBrush(Color.Gray);
            // 画椭圆需要5个参数
            //g.FillEllipse(brush, 10, 10, 500, 200);
            // 释放画线动作
            //g.Dispose();
            // 释放笔
            //brush.Dispose();
            // (多播委托)
            drawsss anm_one = new drawsss(shixin_CheckedChanged);
            anm_one += wenli_CheckedChanged;
            anm_one += jianbian_CheckedChanged;
            anm_one += yinying_CheckedChanged;
        }
        // 定义一个画刷
        //private Brush brush = new SolidBrush(Color.Gray);
        // 画实心
        private void shixin_CheckedChanged(object sender, EventArgs e)
        {
            // 创建一个用于画图的对象
            Graphics g = this.CreateGraphics();
            SolidBrush brush = new SolidBrush(Color.Gold);
            // 画椭圆需要5个参数
            g.FillEllipse(brush, 10, 10, 500, 200);
           
        }
        //画纹理
        private void wenli_CheckedChanged(object sender, EventArgs e)
        {
            // 创建一个用于画图的对象
            Graphics g = this.CreateGraphics();
            TextureBrush brush = new TextureBrush(imageList1.Images[0]);
            // 画椭圆需要5个参数
            g.FillEllipse(brush, 10, 10, 500, 200);
           
        }
        // 画渐变(从一种颜色变道另一种颜色)
        private void jianbian_CheckedChanged(object sender, EventArgs e)
        {
            // 创建一个用于画图的对象
            Graphics g = this.CreateGraphics();
            // 设置划线起点和终点坐标
            Point startPoint = new Point(200, 200);
            Point endPoint = new Point(800, 800);
            LinearGradientBrush brush = new LinearGradientBrush(startPoint, endPoint, Color.HotPink, Color.LightBlue);
            // 画椭圆需要5个参数
            g.FillEllipse(brush, 10, 10, 500, 200);
        }
        private void yinying_CheckedChanged(object sender, EventArgs e)
        {
            // 创建一个用于画图的对象
            Graphics g = this.CreateGraphics();
            HatchBrush brush = new HatchBrush(HatchStyle.DashedDownwardDiagonal, Color.SeaShell, Color.Thistle);
            // 画椭圆需要5个参数
            g.FillEllipse(brush, 10, 10, 500, 200);
        }
    }
}

有好的建议,请在下方输入你的评论。

欢迎访问个人博客
https://guanchao.site

欢迎访问小程序:

在这里插入图片描述

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
.Net是由微软公司推出的一种面向Windows平台的应用程序开发框架。它的全称是"dotNet",目的是为了简化Windows上的软件开发。.Net是一个软件编程框架,提供了一系列工具和技术,用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序以及移动设备应用程序。 C#是一种由微软公司开发的面向对象的编程语言,是.Net开发框架的主要编程语言之一。C#是一种通用的编程语言,它具有很强的类型安全性和高效性能。C#语言是.Net开发框架的一部分,在开发各种类型的应用程序时,C#可以与.Net框架无缝地集成,提供了丰富的库和工具来简化开发工作。 使用.Net开发应用程序可以带来很多好处。首先,由于.Net是由微软公司推出的,它在Windows平台上有广泛的支持,可以轻松地与Windows操作系统集成。其次,.Net框架提供了丰富和强大的类库,开发人员可以快速构建复杂的应用程序,大大提高开发效率。此外,.Net框架还具有一些高级功能,例如自动垃圾回收、内存管理等,有助于提高应用程序的性能和稳定性。 C#作为.Net框架的主要编程语言之一,具有许多有用的特性。C#是一种面向对象的编程语言,具有封装、继承和多态等面向对象的特性。它还提供了一些高级功能,例如异常处理、事件驱动编程等,使开发人员能够更好地管理和控制程序的行为。C#还支持LINQ(Language Integrated Query)等功能,可以方便地对各种数据源进行查询和操作。 总体而言,.Net与C#的结合为开发人员提供了一个强大的工具和平台,可以快速、高效地开发各种类型的应用程序。无论是桌面应用程序、Web应用程序还是移动设备应用程序,使用.Net和C#可以让开发过程更加简单、快速和可靠。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值