绘图相关的命名空间

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

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

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

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

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


像素和坐标系

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

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


颜色:



画图:

****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);}

Brush画刷的四个派生类

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

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

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

效果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mYRzbmAT-1656122898496)(
“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

欢迎访问小程序:

C#(三十二)之Windows绘图相关推荐

  1. ASP 三十二条精华代码

    整理收藏: ASP 三十二条精华代码 1. οncοntextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键 <table b ...

  2. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

  3. NeHe OpenGL第三十二课:拾取游戏

    NeHe OpenGL第三十二课:拾取游戏 拾取, Alpha混合, Alpha测试, 排序: 这又是一个小游戏,交给的东西会很多,慢慢体会吧   欢迎来到32课. 这课大概是在我所写作已来最大的一课 ...

  4. 王茂斋拳架_王茂斋太极功(接近传奇,从读懂原著开始;吴式太极拳北派宗师王茂斋,门人杨禹廷、刘晚苍、王培生等名家辈出;《太极功源流支派论》《三十二目》)...

    王茂斋太极功(接近传奇,从读懂原著开始:吴式太极拳北派宗师王茂斋,门人杨禹廷.刘晚苍.王培生等名家辈出:<太极功源流支派论><三十二目>)电子书 ○披露杨禄躔以降之早年太极拳传 ...

  5. 【Microsoft Azure 的1024种玩法】四十二. 通过Windows Admin Center快速创建Azure Virtual Machines

    [简介] Windows Admin Center是微软开发的一套可以部署在本地基于浏览器的GUI的工具集平台,其平台可用于管理Windows相关服务器和PC机器,我们可以利用Windows Admi ...

  6. 【Visual C++】游戏开发笔记三十二 浅墨DirectX提高班之一 DirectX大局观认知篇

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:  http://blog.csdn.net/zhmxy555/article/details/8172615 作者:毛星云(浅 ...

  7. 【正点原子FPGA连载】 第三十二章基于lwip的TCP服务器性能测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    第三十二章基于lwip的TCP服务器性能测试实验 上一章的lwip Echo Server实验让我们对lwip有一个基本的了解,而Echo Server是基于TCP协议的.TCP协议是为了在不可靠的互 ...

  8. axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  9. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  10. 三十二、Java集合中的ArrayList

    @Author:Runsen @Date:2020/6/3 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

最新文章

  1. 刚刚,Python 3.10 正式发布了,我发现了一个可怕的功能..
  2. 试玩 go-socks5
  3. javascript 判断变量是否为null
  4. 数组拷贝问题的解决方法
  5. 回填用土好还是砂石料好_养羊喂撒粉料好还是颗粒料好?
  6. 图解opengl曲线和曲面绘制
  7. BCS和ECCS等合并系统简单对比
  8. SpringCloud微服务全栈实战讲解 - 公开课笔记
  9. 好的PPT——准备工作
  10. 信息学奥赛一本通(1239:统计数字)
  11. Java网络爬虫该如何学习
  12. 3文字怎么断行_Word闹鬼,行首出现删不掉的空格怎么办?
  13. 一文详解深度学习模型部署!(分类+检测+分割)
  14. 点击按钮复制到剪切板
  15. 安防综合管理平台/视频资源汇聚平台
  16. Ubuntu 16.04安装搜狗拼音
  17. 2015年最新互联网概念股一览表
  18. 稳压二极管串联电阻计算
  19. WPF中UserControl 绑定样式(小白教程)
  20. 基于jsp的实验室预约管理系统的设计与实现

热门文章

  1. 怎么修改网页边框html,DIV+CSS网页布局之边框的设置方法
  2. 为什么web网页会被劫持,网页被劫持的解决方法有哪些?
  3. 网页服务器修复,网页被劫持,跳转发布网修复方法 看完就明白
  4. vbs过程参数--byref和byval
  5. 历数PC发展史上的祖先们
  6. uni-app最新获取微信头像方法getUserProfile?
  7. GAP:Learning Contextual Representations for Semantic Parsing with Generation-Augmented Pre-Training
  8. c++求解一元二次方程的解
  9. excel日期相减去除周末_在Excel中突出显示周末日期
  10. hanlp自然语言处理包的基本使用--python