开发者社区> 橘子红了呐> 正文

C# GDI+学习笔记1

简介:
+关注继续查看



前言

本文是学习C# GDI+系列的第一篇文章简单的介绍了GDI+的一些基本绘图内容比较粗糙。但本文主要是让大家简单的回顾一下GDI+的基本概念。本篇文章的参考代码请在此下载 。

GDIPTest_Article1_161112_2346.rar

如果有什么疑问或者建议请留言联系本人。

 

1 窗口重绘

Windows自动处理鼠标拖动窗体、更改窗体大小等用户操作自动调整窗体所占屏幕区域的大小并进行重画
当需要重画时Windows发送消息WM_PAINT
 
窗体对象的Paint事件用于响应WM_PAINT消息
–当窗体被挡住并再次显示时
–当其他窗体在主窗体上移动时
–当主窗体的尺寸变大时
–Windows只重绘必要的区域ClipRectangle属性
–调用Invalidate方法主动激发WM_PAINT消息
 

2. 绘图内容

点  Point
矩形  Rectangle
颜色  Color
笔  Pen
画刷  Brush
字体  Font
路径  GraphicsPath
区域  Region
 
.Net中提供了两个数据结构表示绘图中的一点的坐标值PointXY与PointF。其封装了两个变量一个表示宽度一个表示高度。
大多数情况下代码中指定的坐标、长度和宽度数值均为像素。可以使用Graphics的PageUnit属性来确定其他的单位。
 
Rectangle矩形
某点是否在矩形内——Contains
矩形的放大与缩小Inflate为正放大为负缩小
求两个矩形的交集Intersect
求并集Union
平移Offset
 
颜色的HSB模型
Hue:色调0…360
Saturation:饱和度0…1
Brightness:亮度0…1
创建Color对象
Color clr;
clr= Color.FromArgb(255, 255, 0, 255)
另一个方法
Color.FromKnownColor(…)
颜色的alpha值表示颜色的透明度。创建透明的对象须将alpha值设置为小于‘255’、
 
 
笔Pen
用于描绘线条
◦绘制线条、曲线、勾勒形状轮廓
◦创建笔对象后可通过设置其属性绘制出不同类型的线条
◦Width, Color
◦StartCap, EndCap开始及结尾点的形状
◦DashStyle设置虚线样式
 
Brushes的类型
创建Solid及Texture实心形状
创建Hatch实心形状
创建Gradient实心形状
创建PathGradient实心形状
创建Transparent实心形状
动手实验:创建Brushes以及填充图形
 
Brush对象用于填充图形
SolidBrush: 纯色画刷
HatchBrush: 图案画刷
◦–Windows提供的典型图案填充图形
TextureBrush: 纹理画刷
LinearGradientBrush: 渐变画刷
◦–用平滑过渡的颜色来填充一个图形
PathGradientBrush: 路径渐变画刷
◦–基于某一路径用复杂的混合色渐变进行填充
 
 
使用gradient brush实现渐变的颜色
使用path gradient brush实现用渐变的颜色填充图形彩色渐变是从路径的中点到路径的外边界边缘的平滑的彩色渐变.
 
 
绘制文本
◦需要Brush对象及Font对象
◦调用Graphics对象的DrawString方法绘制文本
绘制文本技巧
◦指定文本绘制范围提供矩形对象
◦控制换行Environment.NewLine
◦绘制竖向文本使用StringFormat对象
 
GraphicsPath
此类封装了一系列相连接的直线、曲线、圆弧等围成的图形。
可通过Add系列方法来构造一个路径通过CloseFigure方法自动完成路径的设置通过Graphics的DrawPath方法来绘制路径FillPath方法来填充路径
 
 
区域Region
指绘图表面的一部分
可以使用Rectangle或GraphicsPath对象来构造一个区域
使用FillRegion对区域进行填充
使用MakeInfinite将一个区域转换为无限区域
可对区域进行类似于集合的操作
可以使用Region对象得到特殊形状的窗体
 
屏幕坐标系
 
平移
g.TranslateTransform(100, 75)
旋转
g.RotateTransform(45)
 
缩放坐标系的缩放是指坐标原点不变但单位长度所占的像素数目有变化;
'水平放大两倍垂直放大三倍
g.ScaleTransform(2.0F, 3.0F)
 
Bitmap
◦–位图是位的数组它指定了像素矩阵中各像素的颜色。
图形文件格式的类型
◦–BMP, GIF, JPEG, EXIF, PNG, TIFF
旋转、倾斜及折射图像
◦–使用DrawImage方法并通过指定左上角、右上角、左下角的目标坐标来实现
通过调用Image对象的GetThumbnailImage方法创建缩略图
 
在图像上输出字
获取图像对象所在容器的Graphics对象g然后调用g的DrawString
或是获取图像本身的Graphics对象并调用DrawString方法。
 
创建图像特效
图像特效是依靠对图像的像素点直接进行操作实现的。并可对像素进行数学变换。
其方法是
◦–调用GetPixel得到点的颜色然后进行相应处理后再用SetPixel写回到图像中。
 
 
 
 
 
没有整理与归纳的知识一文不值高度概括与梳理的知识才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚让创造力自由成长吧 多花时间关心他她人正如别人所关心你的。理想的腾飞与实现没有别人的支持与帮助是万万不能的。



    本文转自wenglabs博客园博客原文链接http://www.cnblogs.com/arxive/p/6057696.html如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
尘央大佬带你学| 学习笔记
快速学习尘央大佬带你学。
19 0
缓冲区管理器 | 学习笔记
快速学习缓冲区管理器
57 0
故障测试2|学习笔记
快速学习故障测试2
20 0
SearchType 详解|学习笔记
快速学习 SearchType 详解。
52 0
SDV 要解决的问题 | 学习笔记
快速学习 SDV 要解决的问题
37 0
Aggregations|学习笔记
快速学习 Aggregations。
92 0
regexpQuery | 学习笔记
快速学习 regexpQuery
48 0
In 和 not in 的使用 | 学习笔记
快速学习 In 和 not in 的使用
24 0
NgForm学习笔记
NgForm学习笔记
48 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
小程序云应用入门实操系列课程 - 第四讲
立即下载
小程序云应用入门实操系列课程 - 第一讲
立即下载
低代码开发师(初级)实战教程
立即下载