绘图常用控件、类和结构

颜色

使用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+使用几个类似结构表示坐标或区域

PointPointF结构

表示图像的一点,是最简单的,具有两个属性,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()(进一)

SizeSizeF结构

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#图形学习笔记的更多相关文章

  1. ios 图形学习笔记

    一.显示文本: 1.UIFont,用于设置显示的字体 初始化方法:fontNamesForFamilyName:(类方法) fontWithName:size:(类方法) 2.绘制文本的方法: NSS ...

  2. deepin linux学习笔记(四)进不去图形界面怎么办?

    目录 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 更换成lxde桌面 进不去图形界面怎么办? 总结 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 生命不息 ...

  3. matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色

    一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...

  4. matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象

    一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matl ...

  5. matlab学习笔记8 基本绘图命令-特殊图形绘制

    一起来学matlab-matlab学习笔记8 基本绘图命令_3 特殊图形绘制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...

  6. matlab学习笔记8 基本绘图命令-图形窗口简介

    一起来学matlab-matlab学习笔记8 基本绘图命令_1 图形窗口简介 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...

  7. Python学习笔记—Python基础1 介绍、发展史、安装、基本语法

    第一周学习笔记: 一.Python介绍      1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  8. html5学习笔记一

    HTML5学习笔记 <video>标记:定义视频,Ogg.MPEG4.WebM三种格式 <video src=”movie.ogg”  controls=”controls”> ...

  9. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

随机推荐

  1. Linq 知识总结

    一.说明: LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相 ...

  2. 关于maven项目导入后缺jar包问题的处理方法

    1.maven项目的好处:方便,我们在把自己写好的代码发送给目标人物时可以精简代码——把target目录,一些设置目录之类的都删除掉,接下来要做的就是尽可能的只留下一个src文件夹及pom.xml文件 ...

  3. traceback异常打印

    traceback模块 traceback模块被用来跟踪异常返回信息. 如下例所示: import traceback try: raise SyntaxError, "traceback ...

  4. tensorflow:实战Google深度学习框架第三章

    tensorflow的计算模型:计算图–tf.Graph tensorflow的数据模型:张量–tf.Tensor tensorflow的运行模型:会话–tf.Session tensorflow可视 ...

  5. Codeforces Round #541 (Div. 2) B.Draw!

    链接:https://codeforces.com/contest/1131/problem/B 题意: 给n次足球比分,求存在平局的机会. 思路: 结构体存储,unique后,判断是否有分数交叉. ...

  6. 2017"百度之星"程序设计大赛 - 初赛(A)今夕何夕

    Problem Description 今天是2017年8月6日,农历闰六月十五. 小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨. 为了排遣郁结,它决定思考一个数学问题:接下来最 ...

  7. D. Anton and Chess 模拟题 + 读题

    http://codeforces.com/contest/734/problem/D 一开始的时候看不懂题目,以为象是中国象棋那样走,然后看不懂样例. 原来是走对角线的,长知识了. 所以我们就知道, ...

  8. 安装drupal对服务器环境的要求

    Drupal 8 Apache 2.x PHP 5.5.9 及以上版本 MySQL 5.5.3 及以上版本 Drupal 7 Apache 2.x PHP 5.2.5 及以上版本(推荐 PHP 5.4 ...

  9. yield和yield from

    yield from的前世今生都在 这个PEP里面,总之大意是原本的yield语句只能将CPU控制权 还给直接调用者,当你想要将一个generator或者coroutine里带有 yield语句的逻辑 ...

  10. 关于HTML5手机端页面缩放的问题

    通常在写HTML5手机端页面的时候,我们会发现页面所显示元素的比例不正确,那此时我们需要添加的就是: <meta name="viewport" content=" ...