C#图形学习笔记
绘图常用控件、类和结构
颜色
使用System.Drawing.Color结构表示
设置颜色的方法
调用静态函数:Color.FromArgb()
- public static Color FromArgb
- (
- int red,
- int green,
- int blue
- )
举例
- Color red= Color.FromArgb(255,0,0)
可以指定人眼能辨识出的任何颜色
若想得出简单的颜色,可以直接使用颜色名
- this.BackColor=Color.White;
画笔
Pen用于告诉Graphics如何绘制线条
Brush用于填充区域
画笔都有System.Drawing.Brush的类实例来表示
最简单的为SolidBrush
- Color customColor=Color.FromArgb(192.192.192);
- SolidBrush shadowBrush=new SolidBrush(customColor);
钢笔只用一个类System.Drawing.Pen来表示,需要制定线条有多宽
- Pen SolidPen=new Pen(Color.FromArgb(0,0,225));
- Pen SolidWidePen=new Pen(Color.Blue,4);
GDI+使用几个类似结构表示坐标或区域
Point和PointF结构
表示图像的一点,是最简单的,具有两个属性,X,Y
- Point b=new Point(20,10);
- Point a=new Point();
- a.X=20;
- a.Y=10;
PointF用于坐标不是整数的情况,X,Y的类型是float
将PointF转换为Point,需要进行显式转换,一般有三个方法,Round()(四舍五入),Truncate()(去尾),Ceiling()(进一)
Size和SizeF结构
Size用于int类型,SizeF用于float类型
Size具有两个属性,Width和Height
Rectangle和RectangleF结构
可以看作由一个Point和一个Size组成,Point表示左上角,Size表示其大小
绘制图形和线条
画直线
格式为:
- public void DrawLine
- (
- Pen pen,
- Point start,
- Point end
- )
绘制虚线,可设置Pen的DashStyle属性为Dash,Dot,DashDot或者DashDotDot等
改变直线端点的形状,可以设置StartCap和EndCap属性
- blackPen.StartCap=LineCap.ArrowAnchor;
画空心矩形
格式为:
- public void DrawRectangle
- (
- Pen pen,
- Rectangle rect
- )
pen结构确定矩形的颜色,宽度和样式
画实心矩形
格式为:
- public void FillRectangle(Brush brush,Rectangle rect)
画椭圆
空心使用Pen,实心使用Brush
格式与画矩形一致
- public void DrawEllipse(Pen pen/Brush brush,Rectangle rect)
绘制弧线
弧线是椭圆的一部分,可调用Grapgics类的DrawArc方法,与DrawEllipse相比多了起始角度和仰角的参数
- public void DrawEllipse
- (
- Pen pen,
- Rectangle rect,
- float startAngle,
- float sweepAngle
- )
startAngle表示从X轴到弧线起始点沿顺时针方向度量的角度
sweepAngle表示从startAngle参数到弧线结束点沿顺时针方向度量的角
绘制多边形
多边形是具有三条或更多条直边的闭合图形,其格式为
- public void DrawPolygon
- (
- Pen pen,
- Point[] points
- )
绘制实多边形的格式为
- public void FillPolygon
- (
- Brush brush,
- Point[] points
- )
获取绘图坐标
事件是类在发生其关注的事情是用来提供通知的一种方式,可以通过代码响应或处理的操作
事件处理函数一般有两个参数,第一个参数为引用事件源的对象,第二个参数为与事件相关的数据
- private void button_MouseMove(object sender,MouseEventArgs e)
鼠标的常用属性
Button |
按下的是那个鼠标按键 |
Clicks |
获取按下并释放鼠标按键的次数 |
Location |
获取鼠标在产生鼠标事件时的位置 |
X |
获取鼠标在产生鼠标事件时的x坐标 |
Y |
获取鼠标在产生鼠标事件时的y坐标 |
例如MouseMove
编写处理函数
- private void Form1_OnMouseMove(object sender,MouseEventArgs e)
- {
- this.text="当前鼠标位置为("+e.X+","+e.Y+")";
- }
关联事件和处理函数
- this.MouseMove+=new System.Windows.Forms.MouseEventHandler(Form1_OnMouseMove);
绘制文本和颜色
绘制文本
在不考虑外观的情况下,只显示一两行文本时非常简单的,只需调用Graphics.DrawString()
格式为
- public void DrawString
- (
- string s,
- Font font,
- Brush brush,
- PointF point
- )
颜色对话框
颜色对话框用于显示并设置用户可用的颜色,使用ColorDialog类来实现
使用步骤如下
1.建立ColorDialog对象
- ColorDialog MyDialog=new ColorDialog();
2.设置可以自定义颜色
- MyDialog.AllowFullOpen=true;
3.显示对话框
- if(MyDialog.ShowDialog()==DialogResult.OK)
- {
- …;
- }
GDI+中的画笔和实心形状
闭合的形状由轮廓和内部组成,使用钢笔画出轮廓,并用画笔填充其内部
常用的画笔类有
SolidBrush
HatchBrush:阴影画笔需要指定前景色(forecolor),背景色(backcolor)和阴影样式(HatchStyle)TextureBtush:纹理画笔,使用位图中存储的图案来填充,需要设置Image对象
LinearGradientBrush:线性渐变画笔,需要设置渐变起始色,渐变结束色及渐变模式(为一枚举值,指定渐变方向)
PathGradientBrush:路径渐变画笔
C#图形学习笔记的更多相关文章
- ios 图形学习笔记
一.显示文本: 1.UIFont,用于设置显示的字体 初始化方法:fontNamesForFamilyName:(类方法) fontWithName:size:(类方法) 2.绘制文本的方法: NSS ...
- deepin linux学习笔记(四)进不去图形界面怎么办?
目录 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 更换成lxde桌面 进不去图形界面怎么办? 总结 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 生命不息 ...
- matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色
一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...
- matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象
一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matl ...
- matlab学习笔记8 基本绘图命令-特殊图形绘制
一起来学matlab-matlab学习笔记8 基本绘图命令_3 特殊图形绘制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...
- matlab学习笔记8 基本绘图命令-图形窗口简介
一起来学matlab-matlab学习笔记8 基本绘图命令_1 图形窗口简介 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...
- Python学习笔记—Python基础1 介绍、发展史、安装、基本语法
第一周学习笔记: 一.Python介绍 1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...
- html5学习笔记一
HTML5学习笔记 <video>标记:定义视频,Ogg.MPEG4.WebM三种格式 <video src=”movie.ogg” controls=”controls”> ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
随机推荐
- 证书重复冲突问题:Command /usr/bin/codesign failed with exit code 1
打开钥匙串 查看是否有两个identifier为相同 的证书,显然导证书的时候不知道怎么把证书导进了系统帐号,并且还重复了.把重复的证书删除就行了.
- 洛谷2758(字符串dp)
题目传送 记得这是我初学dp时的一道题 虽说就像LCS一样搞一搞即可 但我还是写挂了qwq #include <cstdio> #include <cstring> #incl ...
- [在读]JavaScript异步编程:设计快速响应的网络应用
很棒的一本,就如书名所示,主要讲js异步的一些东西,比如定时器.Jquery的promise和deffered,node...看了一小半.推荐哦~~
- Jquery多选框互相内容交换
<head runat="server"> <title>无标题页</title> <script type="text/jav ...
- cucumber 文件目录结构和执行顺序
引用链接:http://www.cnblogs.com/timsheng/archive/2012/12/10/2812164.html Cucumber是Ruby世界的BDD框架,开发人员主要与两类 ...
- Eclipse+Tomcat环境集成
1.下载Eclipse: 我用的Version: Mars.2 Release (4.5.2),直接在官网上下:http://www.eclipse.org/downloads/packages/re ...
- System.TypeInitializationException: 'The type initializer for 'MySql.Data.MySqlClient.Replication.ReplicationManager' threw an exception.'
下午在调试的时候报错数据库连接就报错我就很纳闷后面用原来的代码写发现还是报错 System.TypeInitializationException: 'The type initializer for ...
- 自定义Mega菜单的巧妙实现
查看了<云制造>官网源码,为其mega菜单的巧妙实现打call. 其另辟蹊径,采取父级主控分支的方法,仅对父级“增加/删除”控制标识,从而控制子层显示. <!DOCTYPE html ...
- Linux下环境搭建(一)——java、tomcat配置
通过2个周末小憩的时间,终究是把linux环境下的jenkins+gitlab+jmeter框架给弄好了.jenkins的配置系列文章,可以翻看我以前的博文.此次,就将在linux下搭建环境的过程以博 ...
- rpm包的安装方法
每次都记不住,这次必须整理一下!cd到你存放rpm文件包的目录rpm -ivh linuxqq-v1.0.2-beta1.i386.rpm安装时可能会遇到缺少包的错误.rpm -ivh --repla ...