《C#入门经典(中文第四版)》第18章:图形图像程序设计
---------------------------------------------------------------------------------------------------------
System.Drawing 命名空间
A1 ………… Color 结构
A2 ………… KnownColor 枚举
A3 ………… SystemColor 类
A4 ………… SystemBrushes 类
A5 ………… SystemFonts 类
A6 ………… SystemIcons 类
A7 ………… SystemPens 类
A8 ………… TextureBrush 类
A9 ………… Font 类
G1 ………… FontFamily 类
G2 ………… Point 结构
G3 ………… Size 结构
G4 ………… Rectangle 结构
G5 ………… Pen 类
G6 ………… Pens 类
G7 ………… Graphics 类
G8 ………… Image 类
G9 ………… Brushes 类
U1 ………… SolidBrushes 类
U2 ………… ColorTranslator 类
System.Drawing.Drawing2D 命名空间
U2 ………… GraphicsPath 类
U3 ………… AjustableArrowCap 类
U4 ………… HatchBrush 类
U5 ………… LinearGradientBrush 类
System.Drawing.Text 命名空间
U6 ………… InstalledFontCollection 类
---------------------------------------------------------------------------------------------------------
System.Drawing 命名空间提供了对 GDI+ 基本图形功能的访问。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A1个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示一种 ARGB 颜色(alpha、红色、绿色、蓝色)。
2. Color属性:
3. Color 方法:
4. Color 运算符:
private void Button1_Click(System.Object sender, System.EventArgs e)
{
if (this.BackColor == SystemColors.ControlDark)
{
this.BackColor = SystemColors.Control;
}
}
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A2个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 指定已知的系统颜色。
2. KnownColor 属性:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A3个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. SystemColors 类的每个属性都是 Color 结构,这种结构是 Windows 显示元素的颜色。
2. SystemColors 属性:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A4个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. SystemBrushes 类的每个属性都是一个 SolidBrush,它是 Windows 显示元素的颜色。
2. SystemBrushes 属性:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A5个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 指定用于在 Windows 显示元素中显示文本的字体。
2. SystemFonts 属性:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A6个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. SystemIcons 类的每个属性都是 Windows 系统级图标的 Icon 对象。无法继承此类。
2. SystemIcons 属性:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A7个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. SystemPens 类的每个属性都是一个 Pen,它是 Windows 显示元素的颜色,宽度为 1 个像素。
2. SystemPens 属性:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A8个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. TextureBrush 类的每个属性都是 Brush 对象,这种对象使用图像来填充形状的内部。无法继承此类。
2. Texture 构造函数:
3. Texture 属性:
4. Texture 方法:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A9个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 定义特定的文本格式,包括字体、字号和字形属性。无法继承此类。
2. Font 构造函数:
Font font = new Font(label1.Font, FontStyle.Bold); //在原字体基础上加宽
label1.Font = font;
FontFamily ff = new FontFamily("微软雅黑");
Font font = new Font(ff, 20f);
label1.Font = font;
Font font = new Font("微软简中圆", 40f);
label1.Font = font;
FontFamily ff = new FontFamily("微软简中圆");
Font font = new Font(ff, 40f, FontStyle.Italic);
label1.Font = font;
Font font = new Font("微软简中圆", 40f, FontStyle.Bold);
label1.Font = font;
3. Font 属性:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G1个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 定义有着相似的基本设计但在形式上有某些差异的一组字样。无法继承此类。
2. FontFamily 构造函数:
3. FontFamily 属性:
4. FontFamily 方法:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G2个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示在二维平面中定义点的、整数 X 和 Y 坐标的有序对。(远离左边的距离,远离上边的距离)
2. Point 属性:
3. Point 方法:
4. Point 运算符:
Point endPoint = startPoint + new Size(140, 150);
if (Point1 == Point2)
{
}
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G3个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 存储一个有序整数对,它指定 Height 和 Width。
2. Size 构造函数:
3. Point 属性:
4. Point 方法:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G4个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 存储一组整数,共四个,表示一个矩形的位置和大小
2. Rectangle 构造函数:
3. Rectangle 属性:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G5个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 定义用于绘制直线和曲线的对象。 此类不能被继承。
2. Pen 构造函数:
3. Pen 属性:
4. Pen 方法:
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G6个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 所有标准颜色的钢笔。无法继承此类。
2. Pens 属性:
※ Pens属性返回的是Pen类的实例,可以直接当做画笔来用。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G7个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 封装一个 GDI+ 绘图图面。 此类不能被继承。
2. Graphic 方法:
1 Graphics g = e.Graphics;
2 Pen p = new Pen((Color.Magenta),2);
3 Point p1 = new Point(0,100);
4 Point p15 = new Point(50, 0);
5 Point p2 = new Point(100,100);
6 Point p3 = new Point(110,200);
7 Point[] ps = new Point[]{p1,p15,p2,p3};
8 Point[] ps2 = { p1, p15, p2, p3 ,new Point(200,240)};
9 g.DrawCurve(p,ps2);
private PointF PolarCoordinate(float r, float angle, int mX, int mY)
{
float x = (Single)(r * Math.Cos(angle * Math.PI / 180)); //给 x 赋值
float y = (Single)(r * Math.Sin(angle * Math.PI / 180)); //给 y 赋值
PointF newP = new PointF(x + mX, y + mY); //给 x 和 y 进行移动,极坐标以原点来算的~
return newP; //返回一个直角坐标系的点
}
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G8个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 为源自 Bitmap 和 Metafile 的类提供功能的抽象基类。
2. Image 属性:
3. Image 方法:
pictureBox1.Image = Image.FromFile("1.jpg");
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
//只有当图片放在 bin\Debug 文件夹中才可以直接写名称!
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G9个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 所有标准颜色的画笔。无法继承此类。
2. Brushes 属性:
Graphics g = e.Graphics;
g.FillRectangle(Brushes.Blue, new Rectangle(10, 10, 100, 100));
※ 每一个静态的属性都是一个Brush对象,因此就可以作为填充的颜色。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U1个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 初始化指定颜色的新 SolidBrush 对象。
2. SolidBrush 构造函数:SolidBrush(Color color)
3. SolidBrush 属性:Color
g.FillRectangle(new SolidBrush(Color.FromArgb(50,Color.Red)),
new Rectangle(textBox1.Left + 5, textBox1.Top + 5, textBox1.Width, textBox1.Height)); //给文本框加上阴影
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U2个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 将颜色翻译成 GDI+ Color 结构并从该结构翻译颜色。 此类不能被继承。
2. ColorTranslator 方法:
备注:Ole - Object Linking and Embedding,对象连接与嵌入,简称 OLE 技术。
---------------------------------------------------------------------------------------------------------
System.Drawing.Drawing2D 命名空间提供高级的二维和矢量图形功能。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U2个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示一系列相互连接的直线和曲线。 此类不能被继承。
2. GraphicsPath 方法:
Graphics g = this.CreateGraphics();
GraphicsPath gp = new GraphicsPath();
Pen p = new Pen(Color.Black, 1);
p.DashStyle = DashStyle.Dash;
for (int i = 10; i <= 200; i += 10)
{
Rectangle r = new Rectangle(220-i, 220-i, 2*i, 2*i);
gp.AddRectangle(r);
}
g.DrawPath(p, gp);
g.Dispose();
gp.Dispose();
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U3个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示可调整的箭头形状的线帽。 此类不能被继承。
2. AjustableArrowCap 构造函数:
AdjustableArrowCap lineCap = new AdjustableArrowCap(6, 6, false);
Pen RedPen=new Pen(Color.Red,2);
RedPen.CustomEndCap = lineCap;
CreateGraphics().DrawLine(RedPen,new Point(0, 0), new Point(100, 150));
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U4个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 用阴影样式、前景色和背景色定义矩形画笔。 此类不能被继承。
2. HatchBrush 构造函数:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace _18_8
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
static int count = 0;
private void button1_Click(object sender, EventArgs e)
{
count++;
Graphics g = this.CreateGraphics();
g.Clear(this.BackColor);
Brush sp = new HatchBrush((HatchStyle)count, Color.White);
g.FillPie(sp, 50, 10, 200, 150, 90, 270);
g.Dispose();
sp.Dispose();
label1.Text = ((HatchStyle)count).ToString();
if (count == 52)
{
count = 0;
}
}
}
}
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U5个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 使用线性渐变封装 Brush。 此类不能被继承。
2. LinearGradientBrush 构造函数:
释放由 Graphics 使用的所有资源。
---------------------------------------------------------------------------------------------------------
System.Drawing.Text 命名空间提供高级 GDI+ 排版功能。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U6个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示安装在系统上的字体。 此类不能被继承。
2. InstalledFontCollection 属性:
System.Drawing.Text.InstalledFontCollection fonts = new System.Drawing.Text.InstalledFontCollection();
foreach (System.Drawing.FontFamily family in fonts.Families)
{
comboBox1.Items.Add(family.Name); //遍历所有安装的字体
}
comboBox1.Text = "微软雅黑";