ASP.NET可互動式位元影像表單設計(8)

來源:互聯網
上載者:User
asp.net|互動|設計 按鈕單擊事件處理常式
    接下來就是每個按鈕的按鈕單擊事件處理常式。多數僅僅是向繪圖列表中添加一個新的可繪製對象,然後調用 PictureBox 上的 Invalidate,從而使用更新的繪圖列表進行重繪。典型的按鈕事件處理常式代碼如下所示:
  
  
    C#
  private void AddPoint_Click(object sender, System.EventArgs e) {
  drawingList.Add(new DPoint(GetRandomPoint(), Color.Blue));
  Drawing.Invalidate();
  }
  
    Visual Basic
  
  .NET Private Sub AddPoint_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles AddPoint.Click
  drawingList.Add(New DPoint(GetRandomPoint(), Color.Blue))
  Drawing.Invalidate()
  End Sub
  
  
    Change fills to hot pink(將填充色更改為粉紅)按鈕有一些不同 -- 它在列表中獲得一個所有可填充對象的數組,然後將它們的畫筆顏色更改為粉紅。這部分代碼顯示在前面“返回可填充列表”一節的末尾。(此外還必須使 PictureBox 無效。)
  
    最後,Erase All(全部刪除)按鈕簡單地建立了一個新的繪圖列表,並將我們的 drawingList 欄位指向該列表。這樣便釋放了舊的繪圖列表以進行最後的記憶體回收。然後使 PictureBox 無效,把自己也刪除掉。
  
    PictureBox 畫圖事件處理常式
    我們要注意的最後一項就是在 PictureBox 中畫出映像。為此,需要處理 PictureBox 產生的 Paint 事件,然後使用通過此事件傳遞的 Graphics 對象在其上進行繪圖。要進行繪圖,只需調用繪圖列表的 DrawList 方法 -- 一個 for each 迴圈和多態將負責處理剩下的工作!
  
  
    C#
  private void Drawing_Paint(object sender,
  System.Windows.Forms.PaintEventArgs e) {
  drawingList.DrawList(e.Graphics);
  }
  
  
    Visual Basic
  
  .NET Private Sub Drawing_Paint(ByVal sender As Object, _
  ByVal e As System.Windows.Forms.PaintEventArgs) _
  Handles Drawing.Paint
  drawingList.DrawList(e.Graphics)
  End Sub
  
  
    我們的 Windows 表單應用程式之旅到此結束 -- 請斟酌這些代碼並進行修改,這樣可以學到更多內容!
  
    在 ASP.NET 應用程式中使用可繪製對象
    雖然 ASP.NET Web 應用程式和 Windows 表單應用程式之間存在某些不同,但兩者的相似性還是令 Dr. GUI 感到驚奇!
  
    Web Form應用程式的主要部分
    ASP.NET Web Form應用程式的主要部分與 Windows 表單應用程式的各部分非常對應。
  
    頁面
    此項對應 Windows 表單應用程式中的主視窗。頁面是所有按鈕和其他控制項的容器。
  
    按鈕
    同樣,這裡有一組按鈕,可用於在表單上執行各種操作。請注意,與以前的應用程式不同,我們將頁面文檔的 pageLayout 屬性設定為 GridLayout 而不是 FlowLayout。這意味著我們可以通過像素位置定位每個按鈕(以及其他控制項)。
  
    請注意,這裡也有一些文字框。
  
    還要注意,您不能向 Web 複製和粘貼 Windows 表單控制項 -- 必須重新建立整個頁面。
  
    影像控制
    影像控制對應於 Windows 表單應用程式中的 PictureBox。但兩者有一些重要的差別:影像控制不產生 Paint 訊息,而是包含載入映像的 URL。
  
    我們將這個 URL 設定為第二個 Web 頁,ImageGen.aspx。換句話說,我們有一個 Web 頁,它的全部工作就是從我們的繪圖列表中產生映像中的位,然後將映像發送到用戶端的 網頁瀏覽器。
  
    我們將在下面討論其代碼。
  
    Web Form應用程式的主要常式
    Windows 表單應用程式和 Web Form應用程式的代碼之間存在一些重要不同 -- 但也有某些有趣的相似之處。還要注意,可繪製對象檔案中的所有代碼都可以用於三種應用程式中的任何一種。
  
    我們的頁面是從 System.Web.UI.Page 派生的,除了以下內容外,還包含一組用於所有控制項的聲明:
  
    完全相同的內容:資料聲明和 GetRandomPoint
    此代碼與 Visual Basic .NET Windows 表單應用程式中的代碼幾乎完全相同。如果願意,可以再看一下上面的這段代碼。它們之間只有一個不同之處,就是對欄位進行了聲明而沒有將其初始化。它們將在 Page_Load 方法中被初始化(如後面所示)。
  
    GetRandomPoint 方法與其他應用程式完全相同。能夠重複使用代碼真的不錯,不是嗎?
  
  非常相似的內容:按鈕單擊事件處理常式
    按鈕單擊事件處理常式與 Windows 表單應用程式相同,只有一個例外:在 Web Form中,由於每次單擊按鈕時都將重繪映像,因此無需(也不能)使影像控制無效。此外,它還將自動進行重繪 -- 因此唯一要調用的就是繪圖列表的 Add 方法。
  
    以下是一個典型的按鈕事件處理常式 -- 用於繪製一個點。
  
  Private Sub AddPoint_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles AddPoint.Click drawingList.Add(New DPoint(GetRandomPoint(), Color.Blue)) End Sub
  
    其他按鈕事件處理常式都與 Windows 表單的情況類似,當然,有一種例外情況除外,即不調用任何一種方法使映像無效。
  
    差別很大的內容:頁面載入和卸載處理常式
    頁面載入和卸載處理常式方法是完全不同的。
  
    請記住,我們的頁面對象是使用每一個 HTTP 要求重新建立的。由於每個請求都將建立一個新頁面,因此我們不能象在 Windows 表單中那樣將資料作為成員變數儲存,在 Windows 表單中,主視窗將伴隨應用程式而存在。
  
    因此我們必須在某種狀態變數中儲存請求和頁面之間所需的資訊。這裡有幾種選擇 -- 下面將就此進行討論。 
  


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.