程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# GDI+繪圖高級編程(2)

C# GDI+繪圖高級編程(2)

編輯:關於C語言

接著給Form1構造函數添加代碼。使用窗體的CreateGraphics()方法創建一個Graphics對象,其中包括繪圖時需要的使用的Windows DC。創建的DC即與顯示設備相關也與窗口相關。

   public Form1()
       {
              InitializeComponent();

              Graphics dc = this.CreateGraphics();
              this.Show();
              Pen bluePen = new Pen(Color.Blue,3);
              dc.DrawRectangle(bluePen,0,0,50,50);    //矩形
              Pen redPen = new Pen(Color.Red,2);
              dc.DrawEllipse(redPen,0,50,80,60);        // 橢圓
       }

然後調用Show()方法顯示窗口。必須讓窗口立即顯示,因為在其顯示之前不能作任何工作。(沒有繪圖的地方)

最後顯示一個矩形和橢圓。注意其中坐標(x,y)表示從窗口的客戶區域左上角向右的X個像素,

向下的Y個像素。

(其中DrawRectangle()和DrawEillipse()這兩個函數前面已經講過不再重復了。)

上面程序窗體如果最小化再恢復,繪制好的圖形就不見了。如果在該窗體上拖動另一個窗口,使之只遮擋一部分圖形,再把該窗口拖離這個窗體,臨時被遮擋的部分就消失了,只剩下一半橢圓或矩形了!原因是:如果窗體的一部分被隱藏了,Windows通常會立即刪除與其中顯示的內容相關的所有信息。在窗口的某一部分消失時,那些像素也就丟失了(即Windows釋放了保存這些像素的內存)。

但要注意窗口的一部分被隱藏了,當它檢測到窗口不再被隱藏時,就請求擁有該窗口的應用程序重新繪制其內容。這個規則有一些例外----窗口的一小部分被擋住的時間比較短(顯示菜單時)。一般情況下應用程序就需要在以後重新繪制它。

由於本示例把繪圖代碼放在Form1的構造函數中,故不能在啟動後再次調用該構造函數進行重新繪制。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved