第12章補充設計型實驗指導_第1頁
第12章補充設計型實驗指導_第2頁
第12章補充設計型實驗指導_第3頁
第12章補充設計型實驗指導_第4頁
第12章補充設計型實驗指導_第5頁
已閱讀5頁,還剩67頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1設計型實驗指導設計型實驗指導設計型實驗指導設計型實驗指導1 1 如何將圖形圖像作為對象如何將圖形圖像作為對象設計型實驗指導設計型實驗指導2 2 如何處理鼠標事件如何處理鼠標事件設計型實驗指導設計型實驗指導3 3 如何繪制任意大小的基本圖形如何繪制任意大小的基本圖形設計型實驗指導設計型實驗指導4 4 如何繪制任意形狀的曲線如何繪制任意形狀的曲線設計型實驗指導設計型實驗指導5 5 如何繪制任意大小和方向旋轉的文字如何繪制任意大小和方向旋轉的文字設計型實驗指導設計型實驗指導6 6 如何繪制任意大小的圖像如何繪制任意大小的圖像設計型實驗指導設計型實驗指導7 7 如何設計和處理句柄如何設計和處理句柄設

2、計型實驗指導設計型實驗指導8 8 如何控制鼠標指針狀態如何控制鼠標指針狀態設計型實驗指導設計型實驗指導9 9 如何設計多機聯合繪圖架構如何設計多機聯合繪圖架構2背景知識背景知識GDI+GDI+繪制圖形圖像繪制圖形圖像GDI+GDI+簡介簡介uGraphics Device Interface (Graphics Device Interface (圖形設備接口圖形設備接口) ),它提供了圖形圖像繪制和處理功能。它提供了圖形圖像繪制和處理功能。u利用利用GDI+GDI+的托管類可以輕松實現顏色漸變、透明的托管類可以輕松實現顏色漸變、透明處理、紋理處理、拉伸和縮放等多種高級功能。處理、紋理處理、拉

3、伸和縮放等多種高級功能。uGDI+GDI+提供三類服務提供三類服務二維矢量圖形處理二維矢量圖形處理二維圖像處理二維圖像處理文字顯示文字顯示3背景知識背景知識GDI+GDI+繪制圖形圖像繪制圖形圖像GDI+GDI+坐標系坐標系u默認情況下,坐標系的原點在繪圖設備的左上角,默認情況下,坐標系的原點在繪圖設備的左上角,x軸正方向水平向右,軸正方向水平向右,y軸正方向水平垂直向下。軸正方向水平垂直向下。4背景知識背景知識GDI+GDI+繪制圖形圖像繪制圖形圖像GDI+GDI+繪制圖形圖像的要素繪制圖形圖像的要素uGraphicsGraphics對象對象在在窗體或控件的窗體或控件的Paint事件事件中利

4、用中利用e.Graphics獲取;獲取;通過當前窗體的通過當前窗體的CreateGraphics方法獲取;方法獲取;從繼承自圖像的任何對象創建從繼承自圖像的任何對象創建Graphics對象;對象;pGraphics g = Graphics.FromImage(myBitmap);Graphics g = Graphics.FromImage(myBitmap);uPenPen對象對象Pen對象有多種構造函數,例如:對象有多種構造函數,例如:pPen myPen = new Pen(Color.Blue,3,5f)Pen myPen = new Pen(Color.Blue,3,5f);uPa

5、intPaint事件事件窗體或控件的窗體或控件的Paint事件事件在各種繪制命令中,坐標原點都是相對的在各種繪制命令中,坐標原點都是相對的5設計指導設計指導1 1 如何將圖形圖像作為對象如何將圖形圖像作為對象 補充例題補充例題M01_RectanleObjectExampleM01_RectanleObjectExample鼠標繪制單個固定大小矩形鼠標繪制單個固定大小矩形鼠標繪制單個可變大小矩形鼠標繪制單個可變大小矩形鼠標繪制多個可變大小的矩形鼠標繪制多個可變大小的矩形 將圖形圖像作為對象將圖形圖像作為對象 當同時繪制多個圖形圖像時,使用類對象更容易處理。當同時繪制多個圖形圖像時,使用類對象更

6、容易處理。6設計指導設計指導1 1 如何將圖形圖像作為對象如何將圖形圖像作為對象【例例1 1】使用鼠標在使用鼠標在PanelPanel內繪制任意大小的橢圓。內繪制任意大小的橢圓。運行效果:運行效果:7設計指導設計指導2 2 如何如何處理鼠標事件處理鼠標事件 1.1.當拖動鼠標在窗體或控件上實現圖形繪制和平移時,都當拖動鼠標在窗體或控件上實現圖形繪制和平移時,都會用到窗體或控件的鼠標事件。常用的鼠標事件有會用到窗體或控件的鼠標事件。常用的鼠標事件有MouseDownMouseDown事件、事件、MouseMoveMouseMove事件和事件和MouseUpMouseUp事件。事件。MouseDo

7、wnMouseDownMouseMoveMouseUpMouseUp用戶在窗體或控件上按下鼠標左鍵用戶在窗體或控件上按下鼠標左鍵時,會觸發時,會觸發MouseDownMouseDown事件,可以事件,可以在此事件中在此事件中捕獲鼠標所在位置的捕獲鼠標所在位置的點的坐標點的坐標。可以持續獲得鼠標移動時經過的一可以持續獲得鼠標移動時經過的一系列點的坐標,從而控制圖形的大小系列點的坐標,從而控制圖形的大小 用戶釋放鼠標左鍵時,用戶釋放鼠標左鍵時,會觸發會觸發MouseUpMouseUp事件事件 8設計指導設計指導2 2 如何處理鼠標事件如何處理鼠標事件2.2.為了區分繪制和平移等鼠標操作,定義一個類

8、封裝對應的為了區分繪制和平移等鼠標操作,定義一個類封裝對應的MouseDownMouseDown、MouseMoveMouseMove和和MouseUpMouseUp事件,并將其聲明為事件,并將其聲明為virtualvirtual。當用鼠標繪制和平移對象時分別從該類派生,重。當用鼠標繪制和平移對象時分別從該類派生,重寫對應的鼠標事件。寫對應的鼠標事件。例如:例如:public class public class ToolObjectToolObject public public virtualvirtual void OnMouseDown( void OnMouseDown(MouseE

9、ventArgsMouseEventArgs e) e) public public virtualvirtual void OnMouseMove( void OnMouseMove(MouseEventArgsMouseEventArgs e) e) public public virtualvirtual void OnMouseUp( void OnMouseUp(MouseEventArgsMouseEventArgs e) e) 9設計指導設計指導2 2 如何處理鼠標事件如何處理鼠標事件假設假設ToolPointerToolPointer實現的是鼠標的選中和平移效果。實現的是鼠標的

10、選中和平移效果。public class public class ToolPointer:ToolObjectToolPointer:ToolObject public public overrideoverride void OnMouseDown(MouseEventArgs e) void OnMouseDown(MouseEventArgs e) /實現代碼實現代碼 public public overrideoverride void OnMouseMove(MouseEventArgs e) void OnMouseMove(MouseEventArgs e) /實現代碼實現代碼

11、 public public overrideoverride void OnMouseUp(MouseEventArgs e) void OnMouseUp(MouseEventArgs e) /實現代碼實現代碼 10設計指導設計指導2 2 如何處理鼠標事件如何處理鼠標事件 ToolObjectToolObject類對鼠標事件進行封裝。類對鼠標事件進行封裝。ToolRectangleToolRectangle類從類從ToolObjectToolObject類繼承,它表示使用鼠標實現矩形的繪制。類繼承,它表示使用鼠標實現矩形的繪制。ToolPointerToolPointer類從類從ToolO

12、bjectToolObject類繼承,它表示使用鼠標實現類繼承,它表示使用鼠標實現繪制對象的選中和平移等功能。繪制對象的選中和平移等功能。11設計指導設計指導2 2 如何處理鼠標事件如何處理鼠標事件 為了統一管理繪制對象的平移和繪制操作,定義為了統一管理繪制對象的平移和繪制操作,定義ToolObjectToolObject類型的變量類型的變量activeToolactiveTool表示當前活動的對象。表示當前活動的對象。 若實現繪制對象的平移效果,若實現繪制對象的平移效果, 則則activeTool=new ToolPointer();activeTool=new ToolPointer();

13、。 若實現矩形繪制,若實現矩形繪制,則則activeTool=new ToolRectangle();activeTool=new ToolRectangle();。 調用時根據調用時根據C#C#執行時調用聲明為執行時調用聲明為virtualvirtual方法方法的原則。如果的原則。如果當前創建的是當前創建的是ToolRectangleToolRectangle類的實例,則就會調用類的實例,則就會調用ToolRectangleToolRectangle中相應的鼠標事件。中相應的鼠標事件。12設計指導設計指導2 2 如何處理鼠標事件如何處理鼠標事件 private void panel1_Mou

14、seDown(object sender, private void panel1_MouseDown(object sender, MouseEventArgs e)MouseEventArgs e) panel1.Capture = false; panel1.Capture = false; if (e.Button = MouseButtons.Left) if (e.Button = MouseButtons.Left) activeTool.OnMouseDown(e); activeTool.OnMouseDown(e); 若若activeToolactiveTool初始化為初始

15、化為ToolRectangleToolRectangle類的實例,則會調用類的實例,則會調用ToolRectangleToolRectangle類中的類中的OnMouseDownOnMouseDown事件。事件。13設計指導設計指導3 3 如何繪制任意大小的基本圖形如何繪制任意大小的基本圖形【例例2 2】繪制任意大小的矩形繪制任意大小的矩形。運行效果:運行效果:14設計指導設計指導3 3 如何繪制任意大小的基本圖形如何繪制任意大小的基本圖形考慮如何繪制任意大小的正方形?考慮如何繪制任意大小的正方形?u構造構造RectangleRectangle對象時,寬度和高度取值相同。對象時,寬度和高度取值

16、相同。考慮如何繪制任意大小的橢圓?考慮如何繪制任意大小的橢圓?u修改修改DrawDraw方法中的代碼即:方法中的代碼即:g.DrawEllipse(pen,Rect);g.DrawEllipse(pen,Rect);考慮如何繪制任意大小的圓?考慮如何繪制任意大小的圓?u構造構造RectangleRectangle對象時,寬度和高度取值相同;對象時,寬度和高度取值相同;u修改修改DrawDraw方法中的代碼即:方法中的代碼即:g.DrawEllipse(pen,Rect);g.DrawEllipse(pen,Rect);15設計指導設計指導3 3 如何繪制任意大小的基本圖形如何繪制任意大小的基本

17、圖形【補充例題補充例題M04_DrawPloygenExampleForm1M04_DrawPloygenExampleForm1】 如何繪制任意大小的直角三角形?(如何繪制任意大小的直角三角形?(調整代碼調整代碼可以改變直角可以改變直角的位置)的位置)16設計指導設計指導3 3 如何繪制任意大小的基本圖形如何繪制任意大小的基本圖形【補充例題補充例題M04_DrawPloygenExampleFormTringleM04_DrawPloygenExampleFormTringle】 如何繪制任意大小的三角形?(如何繪制任意大小的三角形?(調整代碼即可以改變三調整代碼即可以改變三角形的方向,實現

18、倒三角、向左三角、向右三角等)角形的方向,實現倒三角、向左三角、向右三角等)17設計指導設計指導3 3 如何繪制任意大小的基本圖形如何繪制任意大小的基本圖形【補充例題補充例題M04_DrawPloygenExampleFormLingM04_DrawPloygenExampleFormLing】繪制任意大小的菱形?繪制任意大小的菱形?18設計指導設計指導3 3 如何繪制任意大小的基本圖形如何繪制任意大小的基本圖形【補充例題補充例題M04_DrawPloygenExampleFormStarM04_DrawPloygenExampleFormStar】繪制任意大小的五角形?繪制任意大小的五角形?

19、19設計指導設計指導3 3 如何繪制任意大小的基本圖形如何繪制任意大小的基本圖形【補充例題補充例題M04_DrawPloygenExampleFormPloygonM04_DrawPloygenExampleFormPloygon】繪制任意大小的正多邊形?繪制任意大小的正多邊形?20設計指導設計指導4 4 如何繪制任意形狀的曲線如何繪制任意形狀的曲線程序舉例:程序舉例:【例例3 3】繪制任意形狀的曲線繪制任意形狀的曲線運行效果:運行效果:21設計設計指導指導4 4 如何繪制任意形狀的曲線如何繪制任意形狀的曲線【補充例題補充例題M02_CurveObjectExampleM02_CurveObj

20、ectExample】 繪制帶箭頭的曲線該如何繪制?繪制帶箭頭的曲線該如何繪制?u在在DrawDraw方法中添加如下代碼:方法中添加如下代碼:(g g為為GraphicsGraphics對象,對象,penpen為為PenPen對象)對象) g.SmoothingMode = SmoothingMode.AntiAlias;g.SmoothingMode = SmoothingMode.AntiAlias; AdjustableArrowCap myArrow = new AdjustableArrowCap myArrow = new AdjustableArrowCap(4, 4, true

21、);AdjustableArrowCap(4, 4, true); pen.CustomEndCap = myArrow; pen.CustomEndCap = myArrow;22設計設計指導指導4 4 如何繪制任意形狀的曲線如何繪制任意形狀的曲線【補充例題補充例題M02_CurveObjectExampleFromCurveArrowM02_CurveObjectExampleFromCurveArrow】 繪制任意形狀的帶箭頭的曲線繪制任意形狀的帶箭頭的曲線23設計指導設計指導4 4 如何繪制任意形狀的曲線如何繪制任意形狀的曲線 繪制封閉曲線該如何繪制?繪制封閉曲線該如何繪制?( (修改

22、修改DrawDraw方法中的代碼)方法中的代碼)using (Pen pen = new Pen(PenColor,PenWidth)using (Pen pen = new Pen(PenColor,PenWidth) Point pts = new PointPointList.Count; Point pts = new PointPointList.Count; PointList.CopyTo(pts); PointList.CopyTo(pts); if (pts.Length 3) if (pts.Length 1) if (pts.Length 1) g.DrawLine(pe

23、n, pts0, pts1); g.DrawLine(pen, pts0, pts1); else else g.DrawClosedCurve(pen, pts, 1.0fg.DrawClosedCurve(pen, pts, 1.0f, , FillMode.AlternateFillMode.Alternate);); 24設計設計指導指導4 4 如何繪制任意形狀的曲線如何繪制任意形狀的曲線【補充例題補充例題M02_CurveObjectExampleFromClosedCurveM02_CurveObjectExampleFromClosedCurve】繪制任意形狀的封閉的曲線繪制任意

24、形狀的封閉的曲線25設計指導設計指導5 5 繪制任意大小和方向旋轉的文字繪制任意大小和方向旋轉的文字程序舉例:程序舉例:【例例4 4】繪制任意大小和方向旋轉的文字繪制任意大小和方向旋轉的文字運行效果:運行效果:26設計指導設計指導6 6 繪制任意大小的圖像繪制任意大小的圖像程序舉例:程序舉例:【例例5 5】繪制任意大小的圖像繪制任意大小的圖像運行效果:運行效果:27繪制圖形圖像的綜合舉例繪制圖形圖像的綜合舉例 補充例題補充例題【M7_DrawShapeExampleM7_DrawShapeExample】28程序主界面風格設計舉例程序主界面風格設計舉例【補充例題補充例題UIDesignerEx

25、ampleUIDesignerExample】 風格樣式一:風格樣式一:29程序主界面風格設計舉例程序主界面風格設計舉例 樣式風格二:樣式風格二:30程序主界面風格設計舉例程序主界面風格設計舉例 樣式風格三:樣式風格三:31設計指導設計指導7 7 句柄的設計和處理句柄的設計和處理 句柄也稱為控制點,可以用黑色的小方框表示。句柄也稱為控制點,可以用黑色的小方框表示。比如矩形的句柄個數是比如矩形的句柄個數是8 8個,這個,這8 8個句柄將矩形的個句柄將矩形的4 4個頂點個頂點和和4 4條邊中間的點作為控制點。條邊中間的點作為控制點。對于曲線而言,可以把構成曲線的點作為句柄。對于曲線而言,可以把構成

26、曲線的點作為句柄。對于文本來說,可以選擇文字所在矩形的左上角和右上角對于文本來說,可以選擇文字所在矩形的左上角和右上角兩個點作為控制點。兩個點作為控制點。 在在DrawObjectDrawObject類中添加句柄處理的抽象方法。類中添加句柄處理的抽象方法。 以以DrawRectangleDrawRectangle類為例,說明如何實現類為例,說明如何實現DrawObjectDrawObject類的抽類的抽象方法。象方法。32設計指導設計指導8 8 鼠標指針狀態控制鼠標指針狀態控制 鼠標指針狀態有鼠標指針狀態有3 3種:種:u繪制狀態、非繪制狀態和選擇狀態。繪制狀態、非繪制狀態和選擇狀態。 為了判

27、斷鼠標的指針狀態為了判斷鼠標的指針狀態u添加一個添加一個ToolPointerToolPointer類。類。ToolPointerToolPointer類中定義了一個枚舉類中定義了一個枚舉SelectionModeSelectionMode,該枚舉有,該枚舉有NoneNone、NetSelectionNetSelection、MoveMove和和SizeSize四四個值。個值。 MouseDownMouseDown、MouseMoveMouseMove和和MouseUpMouseUp事件中分別進行幾種事件中分別進行幾種狀態的轉換狀態的轉換uNoneNone是初始狀態、是初始狀態、uNetSel

28、ectionNetSelection是選擇圖形圖像狀態,繪制矩形選擇框的虛框是選擇圖形圖像狀態,繪制矩形選擇框的虛框(即繪制一個灰色的矩形,使其包含所選擇的圖形圖像對象)(即繪制一個灰色的矩形,使其包含所選擇的圖形圖像對象)uMoveMove是移動選中的對象是移動選中的對象uSizeSize是調整圖形圖像的大小。是調整圖形圖像的大小。33設計指導設計指導8 8 鼠標指針狀態控制鼠標指針狀態控制 【例例6 6】在例在例5 5的基礎上實現圖形圖像的選中、縮放、平移的基礎上實現圖形圖像的選中、縮放、平移等效果。等效果。 運行效果:運行效果:34設計指導設計指導9 9 多機聯合繪圖架構設計多機聯合繪圖

29、架構設計 關鍵點關鍵點u繼承機制繼承機制u雙緩沖雙緩沖u如何傳輸:字符串、字節數組如何傳輸:字符串、字節數組u序列化與反序列化序列化與反序列化u導出對象導出對象1.1. 打印預覽打印預覽35設計指導設計指導9 9 多機聯合繪圖架構設計多機聯合繪圖架構設計9-19-1 綜述綜述主機和附機主機和附機 任何一臺計算機都可以作為主機,但一旦某臺計算機作為主機后,連接到該機的其任何一臺計算機都可以作為主機,但一旦某臺計算機作為主機后,連接到該機的其他同時制圖的計算機只能作為附機。他同時制圖的計算機只能作為附機。 系統要求必須有一臺計算機作為主機,并且只能有一個主機。只有當主機進入制作系統要求必須有一臺計

30、算機作為主機,并且只能有一個主機。只有當主機進入制作界面之后,其他附機才能進入制作界面。當主機退出制作界面之后,所有的附機界面之后,其他附機才能進入制作界面。當主機退出制作界面之后,所有的附機都將無法繼續制作。都將無法繼續制作。系統功能要求系統功能要求(1 1)圖形繪制:完成基本圖形繪制功能,如曲線、矩形、橢圓等。)圖形繪制:完成基本圖形繪制功能,如曲線、矩形、橢圓等。(2 2)圖像繪制:以透明方式顯示任意圖像,并能實現圖像的縮放。)圖像繪制:以透明方式顯示任意圖像,并能實現圖像的縮放。(3 3)文字繪制:能在任意位置顯示指定大小的文字,并能旋轉。)文字繪制:能在任意位置顯示指定大小的文字,并

31、能旋轉。(4 4)導出圖片:能將繪制的對象導出為)導出圖片:能將繪制的對象導出為jpgjpg圖像文件、并提供打印與打印預覽功能。圖像文件、并提供打印與打印預覽功能。(5 5)使用鼠標選中一個或多個圖形圖像對象時,可以移動或刪除選中的對象。)使用鼠標選中一個或多個圖形圖像對象時,可以移動或刪除選中的對象。(6 6)保存繪圖對象后,下次運行程序可以打開原來繪制的對象,并能在原來的基礎上)保存繪圖對象后,下次運行程序可以打開原來繪制的對象,并能在原來的基礎上繼續繪制,也可以修改已有的對象。繼續繪制,也可以修改已有的對象。(7 7)用戶可以在多臺機器上同時繪制同一張圖的不同部分,而且大家看到的界面是一

32、)用戶可以在多臺機器上同時繪制同一張圖的不同部分,而且大家看到的界面是一樣的。樣的。36設計指導(設計指導(9-29-2) 類設計類設計1 1繪圖對象類設計繪圖對象類設計為了統一管理各種繪圖對象,可以將要繪制的對象抽取成一個抽為了統一管理各種繪圖對象,可以將要繪制的對象抽取成一個抽象基類象基類DrawObjectDrawObject,而其他繪制的對象類則從,而其他繪制的對象類則從DrawObjectDrawObject繼繼承,在擴充類中,通過重寫承,在擴充類中,通過重寫DrawObjectDrawObject類的屬性和方法,即類的屬性和方法,即可實現針對特定圖形圖像的繪制。可實現針對特定圖形圖

33、像的繪制。37設計指導(設計指導(9-29-2) 類設計類設計2 2工具類設計工具類設計當用戶使用鼠標拖放繪制、選中和移動對象時,都會用到窗體或控件的當用戶使用鼠標拖放繪制、選中和移動對象時,都會用到窗體或控件的MouseMoveMouseMove、MouseDownMouseDown和和MouseUpMouseUp事件。對于不同的對象,這些鼠標事件事件。對于不同的對象,這些鼠標事件中的實現代碼也不盡相同,為此需要提供一個實現圖形圖像鼠標控制的基中的實現代碼也不盡相同,為此需要提供一個實現圖形圖像鼠標控制的基類類ToolObject ToolObject 。38設計指導(設計指導(9-29-2

34、) 類設計類設計3 3其他類設計:其他類設計:公共類以及進行主機和附機通信的類的設計公共類以及進行主機和附機通信的類的設計(1 1)ObjectIDObjectID類提供為圖形圖像對象創建類提供為圖形圖像對象創建IDID的方法。的方法。(2 2)CCCC類提供系統公用的屬性和方法定義。類提供系統公用的屬性和方法定義。(3 3)GraphicsListGraphicsList類保存繪制對象的列表,同時實現繪圖對類保存繪制對象的列表,同時實現繪圖對象的查找、刪除、選擇等功能。繪制對象列表由象的查找、刪除、選擇等功能。繪制對象列表由ListList類型的字段來進行維護。類型的字段來進行維護。(4 4

35、)UserUser類封裝與服務器通信的客戶端信息。類封裝與服務器通信的客戶端信息。(5 5)MyClientMyClient類封裝附機的相關信息,提供附機向主機發送類封裝附機的相關信息,提供附機向主機發送信息以及從主機接收信息的相關處理方法。信息以及從主機接收信息的相關處理方法。(6 6)MyServerMyServer類封裝主機的相關信息,提供主機向附機發送類封裝主機的相關信息,提供主機向附機發送信息以及從附機接收信息的相關處理方法。信息以及從附機接收信息的相關處理方法。39設計指導(設計指導(9-39-3)主機和附機)主機和附機 在主機和附機的通信中,主機收到附機發送的字符信息在主機和附機

36、的通信中,主機收到附機發送的字符信息后,需要解析字符串的含義,并確定主機需要執行的操后,需要解析字符串的含義,并確定主機需要執行的操作。對于附機來說,亦是如此。字符串分為命令部分和作。對于附機來說,亦是如此。字符串分為命令部分和參數部分,命令部分和參數部分之間以及參數部分的各參數部分,命令部分和參數部分之間以及參數部分的各個參數之間均用逗號分隔。個參數之間均用逗號分隔。 主機發給附機的命令主機發給附機的命令 附機發給主機的命令附機發給主機的命令40設計指導(設計指導(9-49-4)具體實現)具體實現畫板設計畫板設計 為了解決在為了解決在PanelPanel控件上繪圖的閃爍問題,使用用戶控件作為

37、控件上繪圖的閃爍問題,使用用戶控件作為繪圖畫板,然后將用戶控件的雙緩沖屬性繪圖畫板,然后將用戶控件的雙緩沖屬性【DoubleBufferedDoubleBuffered】的的值設置為值設置為truetrue即可。即可。【例例7 7】 創建多機聯合繪圖應用程序,實現畫板的設計。創建多機聯合繪圖應用程序,實現畫板的設計。2.2.多機同步控制多機同步控制 通過發送相應的命令實現。通過發送相應的命令實現。【例例8 8】 在例在例12-712-7的基礎上實現多機同步控制功能。的基礎上實現多機同步控制功能。41設計指導(設計指導(9-49-4)具體實現)具體實現3.3.序列化與反序列化序列化與反序列化 繪

38、圖對象的序列化與反序列化有兩個用途:繪圖對象的序列化與反序列化有兩個用途:u一是傳輸圖像時要進行序列化與反序列化一是傳輸圖像時要進行序列化與反序列化u二是保存文件時需要序列化,打開文件時需要反序列化。二是保存文件時需要序列化,打開文件時需要反序列化。 最簡單的辦法就是給類添加最簡單的辦法就是給類添加SerializableSerializable特性特性 通過實現通過實現ISerializableISerializable接口的接口的GetObjectDataGetObjectData方法方法u序列化時,會自動調用序列化時,會自動調用GetObjectDataGetObjectData方法,并

39、使用方法,并使用SerializationInfoSerializationInfo類存儲序列化與反序列化的全部數據。類存儲序列化與反序列化的全部數據。u序列化時,使用序列化時,使用AddValueAddValue方法將對象添加到方法將對象添加到SerializationInfoSerializationInfo存儲區中存儲區中u反序列化時,使用反序列化時,使用GetValueGetValue方法從方法從SerializationInfoSerializationInfo存存儲區中提取對象。儲區中提取對象。42設計指導(設計指導(9-49-4)具體實現)具體實現4.4.圖像的打印和預覽圖像的打印和預覽打印功能的實現主要用到打印功能的實現主要用到PrintPreviewDialogPrintPreviewDialog對話框和對話框和PrintDocumentPrintDocument類。其中類。其中PrintPreviewDialogPrintPreviewDialog實現打印預覽實現打印預覽功能,功能,PrintDocumentPrintDocument實現打印功

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論