使用GDI+编程 2
在屏幕上绘图
画笔和钢笔
画笔和钢笔两个辅助类,在绘制图形时需要使用它们 。前面已经见过 Pen 类了,它用于告诉graphics 实例如何绘制线条 。相关的类是 System.Drawing.Brush,它告诉 graphics 实例如何填充区域 。例如,Pen 用于绘制前面示例中矩形和椭圆的边框 。如果需要把这些图形绘制为实心的,就要使用画笔指定如何填充它们 。这两个类有一个共同点∶很难对它们调用任何方法 。用需要的颜色和其他属性构造一个 Pen 或 Brush 实例,再把它传送给需要 Pen 或 Brush 的绘图方法即可 。注意∶
如果使用以前的 GDI 编程,可能会注意到在前两个示例中,在 GDI+中使用 Pen 的方式是不同的 。在 GDI中,一般是调用一个 Windows API 函数 SelectObject(),它把钢笔关联到设备环境上 。这个钢笔用于所有需要钢笔的绘图操作中,直到再次调用 SelectObject()通知设备环境停止使用它时为止 。这个规则也适用于画笔和其他对象,例如字体和位图 。而使用GDI+,Microsoft 使用一种无状态的模式,其中没有默认的钢笔或其他帮助对象 。只需给每个方法调用指定合适的帮助对象即可 。
画笔
GDI+有几种不同类型的画笔,本章不准备详细介绍它们,这里仅解释几个比较简单的画笔,读者掌握其要领即可 。每种画笔都由一个派生自抽象类 System.Drawing.Brush 的类实例来表示 。最简单的画笔 System.Drawing.SolidBrush 仅指定了区域用纯色来填充∶
Brush solidBeigeBrush = new SolidBrush(Color.Beige);
Brush solidFunnyOrangyBrownBrush =new SolidBrush(Color.FromArgb(255,155,100));
另外,如果画笔是一种 Web安全颜色,就可以用另一个类 System.Drawing.Brushes 构造出画笔 。Brushes 是永远不能实例化的一个类(它有一个私有构造函数,禁止实例化) 。它有许多静态属性,每个属性都返回指定颜色的画笔 。可以象下面这样使用画笔∶
Brush solidAzureBrush = Brushes.Azure;Brush solidChocolateBrush = Brushes.Chocolate;
比较复杂的一种画笔是影线画笔(hatch brush),它通过绘制一种模式填充区域,这种类型的画笔比较高级,所以在 Drawing2D命名空间中,用
System.Drawing.Drawing2D.HatchBrush 类表示 。Brushes 类不能帮助我们使用影线画笔,而需通过提供一个影线型式和两种颜色(前景色和背景色,背景色可以忽略,此时将使用默认的黑色),来显式构造一个影线画笔 。影线型可以取自于枚举
System.Drawing.Drawing2D.HatchStyle,其中有许多 HatchStyle值,其完整列表参阅SDK 文档说明 。为了让用户掌握这个概念,一般的型式包括 ForwardDiagonal、Cross、Diagonal Cross、SmallConfetti和 ZigZag 。构造影线画笔的示例如下所示 。
Brush crossBrush = new HatchBrush(HatchStyle.Cross, Color.Azure);
// background color of CrossBrush is black
Brush brickBrush = new HatchBrush(HatchStyle.DiagonalBrick,
Color.DarkGoldenrod, Color.Cyan);
GDI只能使用实线和影线画笔,GDI+添加了两种新画笔∶
●
System.Drawing.Drawing2D.LinearGradientBrush用一种在屏幕上可变的颜色填充区域 。
●
System.Drawing.Drawing2D.PathGradientBrush 与此类似,但其颜色沿着要填充的区域的
路径而变化 。
如果细心使用,这些画笔会得到一些惊人的效果 。
钢笔
与画笔不同,钢笔只用一个类 System.Drawing.Pen 来表示 。但钢笔比画笔复杂一些,因为它需要指定线条应有多宽(像素),对于一条比较宽的线段,还要确定如何填充该线条中的区域 。粗线条中的区域可以用纯色填充,或者使用画笔来填充 。因此 Pen 实例可以包含 Brush 实例的引用 。这是非常强大的,因为这表示我们可以绘制有影线填充或线性阴影的线条 。构造 Pen 实例有四种不同的方式:
- 夏天可以给孩子使用防晒霜吗
- 农用链霉素图片 农用链霉素怎么使用
- 瑞虎5x使用了什么发动机
- 茶叶蛋的汤汁可以反复使用吗
- 支付宝沾沾卡攻略 支付宝沾沾卡怎么使用
- 知识大全 常识修改器
- 三七苗期有什么农药可以使用
- 锅炉注册使用登记证 注册环保锅炉公司流程
- 使用中生菌素有哪些注意事项
- 86和brz是使用了一样的发动机吗
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
