国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#自定義事件模擬風吹草搖擺效果

C#自定義事件模擬風吹草搖擺效果

2022-01-19 11:41計劃 C#

這篇文章主要介紹了C#自定義事件模擬風吹草搖擺效果,草地上每一顆草都監聽HoverTreeWindEvent事件,根據風向(WindDdirection)調整姿態。需要的朋友可以參考下

這是一個自定義事件的例子。c#、winform、visual studio 2017。

在hovertreeform中畫一塊草地,上面有許多草(模擬)。

hewenqitianyi類模擬天氣,會引發“風”事件(hovertreewindevent),風有東風或西風,或靜止。

當吹東風,草往西邊倒,吹西風則往東邊到。靜止則草不會東歪西倒。

草地上每一顆草都監聽hovertreewindevent事件,根據風向(windddirection)調整姿態。

hewenqitianyi中有定時器,每隔一段時間觸發調整風向的事件。

由于監聽到的“風”事件不是winform中的線程,要改變winform中“草”的姿態,

使用了begininvoke方法和委托,在winform線程外訪問控件。具體看hovertreegrass用戶控件。

效果圖:

C#自定義事件模擬風吹草搖擺效果

hewenqitianyi類代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using system;
using system.timers;
namespace tianyihewenqi
{
  class hewenqitianyi
  {
    public static event actioneventhandler hovertreewindevent;
    windeventargs _arg = new windeventargs();
    public hewenqitianyi()
    {
      timer h_timer = new timer();
      h_timer.interval = 3000;
      h_timer.elapsed += h_timer_elapsed;
      h_timer.start();
    }
    random _hoverclock=new random ();
    private void h_timer_elapsed(object sender, elapsedeventargs e)
    {
      _arg.windtype = (windddirection)(_hoverclock.next(3));
      onaction(_arg);
    }
    protected void onaction(windeventargs ev)
    {
      hovertreewindevent?.invoke(ev);
      //相當于以下代碼
      //if (hovertreewindevent != null)
      //{
      //  hovertreewindevent(ev);
      //}
    }
  }
  class windeventargs : eventargs
  {
    public windddirection windtype { get; set; }
  }
  enum windddirection
  {
    east,
    west,
    static
  }
  delegate void actioneventhandler(windeventargs ev);
}

自定義用戶控件代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using system;
using system.windows.forms;
namespace tianyihewenqi
{
  public partial class hovertreegrass : usercontrol
  {
    delegate void mysettext(string text);
    public hovertreegrass()
    {
      initializecomponent();
      hewenqitianyi.hovertreewindevent += hewenqitianyi_hovertreewindevent;
    }
    private void updatelabel(windddirection wd)
    {
      if (label_grass.invokerequired)
      {
        // 當一個控件的invokerequired屬性值為真時,說明有一個創建它以外的線程想訪問它
        action<windddirection> actiondelegate = (x) => {
          switch (x)
          {
            case windddirection.east:
              label_grass.location = new system.drawing.point(40 - 9, label_grass.location.y);
              label_grass.text="\\";
              break;
            case windddirection.west:
              label_grass.location = new system.drawing.point(40+9, label_grass.location.y);
              label_grass.text = "/";
              break;
            case windddirection.static:
              label_grass.location = new system.drawing.point(40, label_grass.location.y);
              label_grass.text = "|";
              break;
          }
        };
        // 或者
        // action<string> actiondelegate = delegate(string txt) { this.label_grass.text = txt; };
        this.label_grass.begininvoke(actiondelegate, wd);
      }
      else
      {
        switch (wd)
        {
          case windddirection.east:
            label_grass.text = "\\";
            break;
          case windddirection.west:
            label_grass.text = "/";
            break;
          case windddirection.static:
            label_grass.text = "|";
            break;
        }
      }
    }
    private void hewenqitianyi_hovertreewindevent(windeventargs ev)
    {
      updatelabel(ev.windtype);
    }
  }
}

hovertreeform窗體代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using system.windows.forms;
namespace tianyihewenqi
{
  public partial class hovertreeform : form
  {
    public hovertreeform()
    {
      initializecomponent();
      for (int i = 0; i < tablelayoutpanel_hovertree.columncount; i++) {
        for (int j = 0; j < tablelayoutpanel_hovertree.rowcount; j++) {
          tablelayoutpanel_hovertree.controls.add(new hovertreegrass(), i, j);
        }
      }
      hewenqitianyi h_ty = new hewenqitianyi();
    }
  }
}

源碼下載:tianyihewenqi.rar

總結

以上所述是小編給大家介紹的c#自定義事件模擬風吹草搖擺效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/jihua/archive/2017/08/18/csharpevent.html

延伸 · 閱讀

精彩推薦
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
主站蜘蛛池模板: 黄色在线观看视频网站 | 亚洲人体视频 | av在线日韩| 国产免费自拍 | 日本二区视频 | 在线视频一区二区 | 婷婷天堂| 一区二区精品视频 | 四虎影视在线 | 99久久免费精品 | 亚洲国产精品一区二区www | 91精品在线看 | 在线一级片 | 国产精品高清在线 | 欧美日韩一区二区视频在线观看 | 久久久91精品国产一区二区三区 | 色毛片 | 中文字幕免费中文 | 国产午夜一区二区三区 | 久草电影在线观看 | 国产精品自拍系列 | jvid精品资源在线观看 | 国产啊v在线观看 | 免费精品视频 | 精品中文字幕一区 | 亚洲国产精品久久久 | 中文字幕二区 | 中文字幕第一页在线 | 亚洲a在线播放 | 中文字幕免费在线 | 日韩国产欧美一区 | 欧美日韩精品电影 | 国产在线视频xxx | 天堂免费在线 | 国产日韩一级片 | 国产成人精品一区二区三区四区 | 香蕉av在线 | 成人免费av | 在线亚洲精品 | 久草一区 | 精品国产91久久 |