张德长

导航

GDI+学习笔记--未完待续

生成Graphics的两种方法:

l 通过事件参数Eventargs生成;

l 通过控件的CreateGraphics方法生成;

 

绘制的两种方法:

l 控件的paint事件;

l 重写Control类的OnPaint方法;

Graphics是否需要Dispose释放资源?(也可以使用using释放资源)

1、由事件参数EventArgs创建的Graphics不需要释放资源,如e.Graphics;

2、由控件本身创建的Graphics需要释放资源,如this.CreateGraphics;

图形变换/变形的分类:

1、线性变形:旋转、缩放和翻转等简单的变形,都是线性变形;

2、仿射变形:线性变形后,再进行平移变形,就叫做仿射变形;

3、剪切变形:根据一个剪切因数对对象进行的扭曲变形;

进行变换的方式

1、通过Graphics的Transform方法进行变换;

2、通过Matrix类进行变换,将Matrix赋值给Graphics的Transform属性即可;

3、对Path和Region进行局部变换;

变换方法测试截图:

关于Matrix类的几点说明:

  • 最右边一列的元素始终不变(0,0,1)
  • 左上角四个元素值,负责缩放变换、旋转变换;
  • 左上角四个元素中,主对角线上的两个元素,分别负责X轴缩放和Y轴缩放;
  • 下面两个元素负责平移变换,左边的负责X平移,右边的元素负责Y平移;

GDI+中有绘图表面的概念,Graphics由哪个控件(或者其事件参数,或者回调方法)创建,那么绘图就会在该控件表面进行,而不会绘制到别的控件表面上;

Rectangle和RectangleF:左边是整数int为参数的矩形,右边是浮点数float为参数的矩形

Point和PointF:左边是整数int为参数的点,右边是浮点数float为参数的点;

双缓存的设置代码:

            this.SetStyle(ControlStyles.UserPaint,true);
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);

测试截图:

测试截图

英语生词本:

thumbnail 英 /ˈθʌmneɪl/  美 /ˈθʌmneɪl/  n. 拇指指甲;极小的东西;短文;缩略图

adj. 极小的,极短的

palette 英 /ˈpælət/  美 /ˈpælət/ n. 调色板;一组颜色;(计算机程序中的)选项板;

intersect 英 /ˌɪntəˈsekt/  美 /ˌɪntərˈsekt/  v. 相交,交叉;横穿,横断;交集

...............................待续......................................

 

posted on 2022-04-11 00:45  张德长  阅读(167)  评论(0编辑  收藏  举报