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

來源:互聯網
上載者:User
asp.net|互動|設計 在 Windows 表單應用程式中使用可繪製對象
    我們已經討論了可繪製對象類,下面談談如何在 Windows 表單應用程式中使用這些類。首先談一下 Windows 表單應用程式是怎樣工作的。
  
    Windows 表單應用程式的主要部分
    簡單的 Windows 表單應用程式套件組合含一個主視窗(或表單),其中包含控制項子項。如果您是一位 Visual Basic 程式員,就會發現這個模型非常熟悉。
  
    主視窗
    任何 Windows 表單應用程式中的關鍵對象都是主視窗。該表單將在應用程式的 static/Shared Main 方法中建立,如下所示。
  
    在一個簡單的 Windows 表單應用程式(例如我們所編寫的)中,所有其他控制項都是此主表單的子項。
  
    按鈕和文字框
    我們的表單具有一套按鈕和一些文字框。每個按鈕有一個處理常式,可以向列表中添加形狀,並繪製列表。所包含的文字框用於顯示如何從表單中獲得輸入。還有一個群組方塊,提供了有關文字框和相關按鈕的可視指示。
  
    PictureBox
    左邊是最重要的控制項:PictureBox。這是繪製和顯示映像的位置。在 Windows 應用程式中,您可能需要隨時重繪映像 -- 例如,如果視窗被最小化或被其他視窗覆蓋,則再次顯示視窗時便需要進行重繪。
  
    在響應畫圖 (Paint) 訊息時便會完成這種按需繪圖,由父表單視窗類別中的一個事件處理常式處理。
  
    Windows 表單應用程式中的主要常式
    我們簡單看一下 Windows 表單應用程式中的重要常式。請注意,使用者介面的代碼與可繪製對象的代碼相比非常簡短。這就是使用 .NET Framework 完成諸多工作的好處。(這也表明我們使用可繪製對象類完成的工作確實很好。)
  
    表單方法
    表單(或主視窗)是從 System.Windows.Forms.Form 中派生的,所以繼承了其所有行為。所有這些控制項都聲明為這個類的成員,這樣在清理類時它們也將被清理(清理是在 Dispose 方法中實際明確完成的)。
  
    它還包含了我們所需資料的聲明(DShapeList 和一個隨機數產生器對象)、Main 以及用於按鈕單擊事件和 PictureBox 畫圖事件的事件處理常式。
  
    Main
    Main 的任務就是建立和運行主視窗對象。其 C# 代碼如下所示。
  
  
  C#
  
  [STAThread]
  static void Main()
  {
  Application.Run(new MainWindow());
  }
  
  
    STAThread 屬性對於 Windows 表單應用程式的 Main 非常重要 -- 您應當始終使用該項,以便依賴於 OLE Automation(例如拖放和剪貼簿)的功能能夠正常工作。
  
    在 Microsoft Visual Studio? 產生的 Visual Basic .NET 原始碼中不會找到此方法,但是如果使用 ILDASM 在 .exe 中尋找,便會找到一個與上面所述功能相同的 Main -- 可能是由 Visual Basic .NET 編譯器產生的。
  
    InitializeComponent
    在 Windows Form Designer generated code(Windows 表單設計器產生的程式碼)下(如果不能看到此地區中的代碼,單擊小加號),會看到用於建立和初始化所有按鈕和表單上其他控制項的代碼。
  
    資料聲明/隨機數產生
    除了在代碼的隱藏地區中聲明的所有控制項外,我們還需要聲明兩個變數:存放繪圖列表的資料結構,以及一個 Random 類型的對象。我們使用 Random 對象為所建立的對象的位置產生隨機數。
  
    資料聲明位於 MainWindow 類內,但位於任何方法之外。在 C# 和 Visual Basic .NET 中,其代碼如下所示:
  
  
    C#
  DShapeList drawingList = new DShapeList();
  Random randomGen = new Random();
  
  
    Visual Basic
  
  .NET Dim drawingList As New DShapeList()
  Dim randomGen As New Random()
  
  
    我們還編寫了一個 helper 方法以獲得一個隨機點:
  
  
     C#
  private Point GetRandomPoint() {
  return new Point(randomGen.Next(30, 320), randomGen.Next(30, 320));
  }
  
    Visual Basic
  
  .NET Private Function GetRandomPoint() As Point
  Return New Point(randomGen.Next(30, 320), randomGen.Next(30, 320))
  End Function
  
  
    它產生兩個位於 30 和 320 之間的隨機數,作為隨機點的座標。


聯繫我們

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