C#的畫圖板

來源:互聯網
上載者:User

很簡單的畫圖板,用C#實現,功能尚未完成,測試一下download


 
最近實在是太忙了,課程設計一個接一個,去年編的畫圖板到現在都還沒改成,湊合一下吧!

作業系統:WindowsXp

開發平台:Microsoft .NET Framework1.1+Microsoft Visual Studio .NET 2003

    開發語言:C#

       

一、         相關知識:

關於c#的繪圖原理:

1.              重繪概念:對於MS windows的視窗而言,windows並沒有儲存每個已開啟的視窗的外觀,每當位於前台的視窗被其他視窗遮蓋、移出螢幕範圍、視窗本身大小改變(包括最大最小化)、使用者在應用程式中人為的通知表單重繪,windows就會告訴應用程式視窗需要重新繪製,以確定視窗的外觀及內容(實際上我們只需要繪製內容,windows本身會考慮視窗的邊框標題及其他要素,因為這是在設計表單時產生的,下面會介紹C#表單的產生)。

2.              OnPaint()函數:C#中每當表單需要重繪,windows都會調用一個函數-OnPaint()。正是基於這一特性,我們只需要重寫這個函數,達到我們希望的表單在重繪時所要繪製的圖形。

3.              C#Graphics繪圖類:Graphics類封裝了一個GDI+的繪圖介面,提供了在windows的控制項、發送給印表機的頁面、記憶體中的位元影像和映像繪製圖形的功能。可以繪製圓弧、矩形、橢圓。Bezier曲線、文本等圖形。我們主要是從視窗控制項獲得Graphics對象,可以在重繪事件OnPaint()中獲得:

Protected override void OnPaint(PaintEventArgs e)

{

      Graphics g = e.Graphics;

      //do our drawing here

}

有時,需要直接在視窗中繪圖,無需引發OnPaint事件,可以調用CreateGraphics方法獲得Graphics對象:

Protected void Form1_Click(object sender,System.EventArgs e)

{

      Graphics g = this.CreateGraphics;

      //do our drawing here

      g.Dispose();   //it is important to dispose resource

}

因為需要互動式地操作,所以在我地程式中採用第一種方法。

 

 

 

二、一些問題

1、對於映像的儲存,我沒有使用序列化,所以沒法改,也懶得加了。我用了一個雙重緩衝的辦法(Image類有一個save的方法),有點怪異,可以儲存位元影像!

2、對於旋轉的的操作我設計的不好,最初沒考慮旋轉

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.