標 題: 一些關于GDI+的文字——圖形容器
發(fā)信站: 浙江大學海納百川站 (Tue Oct 26 11:55:40 2004), 轉信
圖形狀態(tài)(剪輯區(qū)域、變形和質量設置)存儲在 Graphics 對象中。GDI+ 允許您通過
使用容器來臨時替換或增加 Graphics 對象中狀態(tài)的組成部分。您可以通過調用 Graph
ics 對象的 BeginContainer 方法來啟動容器,通過調用 EndContainer 方法來結束容
器。在 BeginContainer 和 EndContainer 之間,您對 Graphics 對象做出的任何狀態(tài)
更改都屬于容器,且不改寫 Graphics 對象的現(xiàn)有狀態(tài)。
下面的示例在 Graphics 對象中創(chuàng)建容器。Graphics 對象的全局變形是向右平移 200
個單位,而容器的全局變形是向下平移 100 個單位。
myGraphics.TranslateTransform(200, 0);
myGraphicsContainer = myGraphics.BeginContainer();
myGraphics.TranslateTransform(0, 100);
myGraphics.DrawRectangle(myPen, 0, 0, 50, 50);
myGraphics.EndContainer(myGraphicsContainer);
myGraphics.DrawRectangle(myPen, 0, 0, 50, 50);
請注意,在前面的示例中,在調用 BeginContainer 和 EndContainer 之間執(zhí)行語句 m
yGraphics.DrawRectangle(0, 0, 50, 50) 與在調用 EndContainer 之后執(zhí)行同一語句
,會產生不同的矩形。只有水平變形應用于在容器外做出的 DrawRectangle 調用。兩種
變形(橫向平移 200 個單位及縱向平移 100 個單位)都應用于在容器內做出的 DrawR
ectangle 調用。
容器可以嵌套在另一容器中。下面的示例在 Graphics 對象中創(chuàng)建容器,并在第一個容
器中創(chuàng)建另一容器。Graphics 對象的全局變換是在 x 方向平移 100 個單位,在 y 方
向平移 80 個單位。第一個容器的全局變形是旋轉 30 度。第二個容器的全局變形是在
x 方向縮放 2 倍。對 DrawEllipse 方法的調用是在第二個容器內做出的。
myGraphics.TranslateTransform(100, 80, MatrixOrder.Append);
container1 = myGraphics.BeginContainer();
myGraphics.RotateTransform(30, MatrixOrder.Append);
container2 = myGraphics.BeginContainer();
myGraphics.ScaleTransform(2, 1);
myGraphics.DrawEllipse(myPen, -30, -20, 60, 40);
myGraphics.EndContainer(container2);
myGraphics.EndContainer(container1);
請注意,所有三種變形都應用于在第二個容器內做出的 DrawEllipse 調用。另外請注意
變形的順序:先縮放,再旋轉,然后平移。最先應用最里面的變形,最后應用最外面的
變形。
Graphics 對象的任何屬性均可在容器內(對 BeginContainer 和 EndContainer 的調用
之間)設置。例如,可在容器內設置剪輯區(qū)域。在容器內完成的任何繪圖都將受制于該
容器的剪輯區(qū)域,并將受制于任何外部容器的剪輯區(qū)域和 Graphics 對象自身的剪輯區(qū)
域。
迄今為止所討論的屬性(全局變形和剪輯區(qū)域)由嵌套的容器合并。嵌套的容器可臨時
替換其他屬性。例如,如果在容器內將 SmoothingMode 屬性設為 SmoothingMode.Anti
Alias,那么在該容器內調用的任何繪圖方法就都將使用AntiAlias 平滑模式,但在 En
dContainer 之后調用的繪圖方法將使用在調用 BeginContainer之前就位的平滑模式。
--
■■■■■■■■■■■■■■■■■■■■■■■■
這個世界只有10種人,懂二進制的和不懂二進制的
■■■■■■■■■■■■■■■■■■■■■■■■
jackyang@cs.zju since 2001
※ 來源:·浙江大學海納百川站 bbs.zju.edu.cn·[FROM: jackyang]
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請
點擊舉報。