国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET可交互式位圖窗體設計(7)

2024-07-10 12:55:37
字體:
供稿:網(wǎng)友
在 windows 窗體應用程序中使用可繪制對象
    我們已經(jīng)討論了可繪制對象類,下面談談如何在 windows 窗體應用程序中使用這些類。首先談一下 windows 窗體應用程序是怎樣工作的。
  
    windows 窗體應用程序的主要部分
    簡單的 windows 窗體應用程序包含一個主窗口(或窗體),其中包含控件子項。如果您是一位 visual basic 程序員,就會發(fā)現(xiàn)這個模型非常熟悉。
  
    主窗口
    任何 windows 窗體應用程序中的關(guān)鍵對象都是主窗口。該窗體將在應用程序的 static/shared main 方法中創(chuàng)建,如下所示。
  
    在一個簡單的 windows 窗體應用程序(例如我們所編寫的)中,所有其他控件都是此主窗體的子項。
  
    按鈕和文本框
    我們的窗體具有一套按鈕和一些文本框。每個按鈕有一個處理程序,可以向列表中添加形狀,并繪制列表。所包含的文本框用于顯示如何從窗體中獲得輸入。還有一個分組框,提供了有關(guān)文本框和相關(guān)按鈕的可視指示。
  
    picturebox
    左邊是最重要的控件:picturebox。這是繪制和顯示圖像的位置。在 windows 應用程序中,您可能需要隨時重繪圖像 -- 例如,如果窗口被最小化或被其他窗口覆蓋,則再次顯示窗口時便需要進行重繪。
  
    在響應畫圖 (paint) 消息時便會完成這種按需繪圖,由父窗體窗口類中的一個事件處理程序處理。
  
    windows 窗體應用程序中的主要例程
    我們簡單看一下 windows 窗體應用程序中的重要例程。請注意,用戶界面的代碼與可繪制對象的代碼相比非常簡短。這就是使用 .net framework 完成諸多工作的好處。(這也表明我們使用可繪制對象類完成的工作確實很好。)
  
    窗體方法
    窗體(或主窗口)是從 system.windows.forms.form 中派生的,所以繼承了其所有行為。所有這些控件都聲明為這個類的成員,這樣在清理類時它們也將被清理(清理是在 dispose 方法中實際明確完成的)。
  
    它還包含了我們所需數(shù)據(jù)的聲明(dshapelist 和一個隨機數(shù)生成器對象)、main 以及用于按鈕單擊事件和 picturebox 畫圖事件的事件處理程序。
  
    main
    main 的任務就是創(chuàng)建和運行主窗口對象。其 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 窗體設計器生成的代碼)下(如果不能看到此區(qū)域中的代碼,單擊小加號),會看到用于創(chuàng)建和初始化所有按鈕和窗體上其他控件的代碼。
  
    數(shù)據(jù)聲明/隨機數(shù)生成
    除了在代碼的隱藏區(qū)域中聲明的所有控件外,我們還需要聲明兩個變量:存放繪圖列表的數(shù)據(jù)結(jié)構(gòu),以及一個 random 類型的對象。我們使用 random 對象為所創(chuàng)建的對象的位置生成隨機數(shù)。
  
    數(shù)據(jù)聲明位于 mainwindow 類內(nèi),但位于任何方法之外。在 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 之間的隨機數(shù),作為隨機點的坐標。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 霍州市| 龙井市| 汶上县| 调兵山市| 鸡泽县| 兰考县| 嘉祥县| 鹤山市| 河曲县| 砀山县| 大冶市| 阿鲁科尔沁旗| 滕州市| 城口县| 汶川县| 子长县| 重庆市| 信丰县| 大同县| 工布江达县| 乌拉特后旗| 宜兰县| 德化县| 定安县| 长顺县| 二手房| 孝感市| 华坪县| 将乐县| 大英县| 栖霞市| 土默特左旗| 五家渠市| 游戏| 和平区| 白朗县| 郓城县| 岚皋县| 中超| 开远市| 镇巴县|