GDI+學習筆記--未完待續

張德長發表於2022-04-11

生成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進行區域性變換;

變換方法測試截圖:

GDI+學習筆記--未完待續

GDI+學習筆記--未完待續

關於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);

測試截圖:

GDI+學習筆記--未完待續

測試截圖

GDI+學習筆記--未完待續

英語生詞本:

thumbnail 英 /ˈθʌmneɪl/  美 /ˈθʌmneɪl/  n. 拇指指甲;極小的東西;短文;縮圖

adj. 極小的,極短的

palette 英 /ˈpælət/  美 /ˈpælət/ n. 調色盤;一組顏色;(計算機程式中的)選項板;

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

...............................待續......................................

 

相關文章