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

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

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

香港云服务器
服務器之家 - 編程語言 - C# - C#自定義音樂播放器進度條

C#自定義音樂播放器進度條

2022-01-17 12:49波谷 C#

這篇文章主要為大家詳細介紹了C#自定義音樂播放器進度條效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

有些時候我們做的程序需要進度條,而vs提供的控件不是我們想要的。先看效果圖:

C#自定義音樂播放器進度條

進度條閃爍動畫,當然背景可設為transparent

之前想手繪進度條線條的,結果控件運行時會閃爍,所以直接用了panel控件

源碼:

?
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
[defaultevent("progressclick")]
  [toolboxbitmap(typeof(trackbar))]
  public partial class processbar : usercontrol
  {
    public processbar()
    {
      //initializecomponent();
      //this.setstyle(controlstyles.userpaint, true);
      //this.setstyle(controlstyles.allpaintinginwmpaint, true);
      //this.setstyle(controlstyles.doublebuffer, true);
    }
 
    private int locationx=0;
    [description("單擊時x的坐標")]
    public int locationx
    {
      get { return locationx; }
    }
  
    private int current = 0;
    [description("當前進度")]
    public int current
    {
      get { return current; }
      set
      {
        if (value > 232 || value < 0)
          return;
        current = value;
        panelcurrent.size = new size(value, 1);
        picture.location = new point(value - 4, -3);
        invalidate();
      }
    }
 
    private bool isplay = false;
    [description("是否播放")]
    public bool isplay
    {
      get { return isplay; }
      set { isplay = value; tmrcurrent.enabled = isplay; invalidate(); }
    }
 
    public delegate void mousehandle(object sender,eventargs e);
    [description("點下鼠標")]
    public event mousehandle barmousedown;
 
    int picturetype = 0;
    private void tmrcurrent_tick(object sender, eventargs e)
    {
      if (picturetype == 0)
      { picture.image = properties.resources.play_slider_thumb; picturetype = 1; }
      else
      { picture.image = properties.resources.play_slider_thumb_animate; picturetype = 0; }
      graphicspath g = subgraphicspath(picture.image);
      if (g == null) return;
      picture.region = new region(g);
    }
 
    private unsafe static graphicspath subgraphicspath(image img)
    {
      if (img == null) return null;
      // 建立graphicspath, 給我們的位圖路徑計算使用 
      graphicspath g = new graphicspath(fillmode.alternate);
      bitmap bitmap = new bitmap(img);
      int width = bitmap.width;
      int height = bitmap.height;
      bitmapdata bmdata = bitmap.lockbits(new rectangle(0, 0, width, height), imagelockmode.readwrite, pixelformat.format24bpprgb);
      byte* p = (byte*)bmdata.scan0;
      int offset = bmdata.stride - width * 3;
      int p0, p1, p2;     // 記錄左上角0,0座標的顏色值
      p0 = p[0];
      p1 = p[1];
      p2 = p[2];
 
      int start = -1;
      // 行座標 ( y col ) 
      for (int y = 0; y < height; y++)
      {
        // 列座標 ( x row ) 
        for (int x = 0; x < width; x++)
        {
          if (start == -1 && (p[0] != p0 || p[1] != p1 || p[2] != p2))   //如果 之前的點沒有不透明 且 不透明 
          {
            start = x;              //記錄這個點
          }
          else if (start > -1 && (p[0] == p0 && p[1] == p1 && p[2] == p2))   //如果 之前的點是不透明 且 透明
          {
            g.addrectangle(new rectangle(start, y, x - start, 1));  //添加之前的矩形到
            start = -1;
          }
          if (x == width - 1 && start > -1)    //如果 之前的點是不透明 且 是最后一個點
          {
            g.addrectangle(new rectangle(start, y, x - start + 1, 1));   //添加之前的矩形到
            start = -1;
          }
          p += 3;                  //下一個內存地址
        }
        p += offset;
      } bitmap.unlockbits(bmdata);
      bitmap.dispose();
      // 返回計算出來的不透明圖片路徑 
      return g;
    }
 
    private void paneltotal_mousedown(object sender, mouseeventargs e)
    {
      current = e.location.x;
      locationx = e.location.x;
      if (barmousedown != null)
      {
        barmousedown.invoke(sender, e);
      }
    }
 
    private void panelcurrent_mousedown(object sender, mouseeventargs e)
    {
      current = e.location.x;
      locationx = e.location.x;
      if (barmousedown != null)
      {
        barmousedown.invoke(sender, e);
      }
    }
  }

用到的素材:

C#自定義音樂播放器進度條C#自定義音樂播放器進度條

直接右鍵另存為圖片,之所以用黑色背景是因為圖片是白色的看不見,不用多說了。

提示:這里用到了unsafe關鍵字,需要設置項目的屬性-----允許運行不安全的代碼,沒有設置的同學不要以為程序錯了

延伸 · 閱讀

精彩推薦
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

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

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

    吳 劍8332021-12-08
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

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

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

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

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

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

    C#教程網6172021-11-09
  • C#C#通過KD樹進行距離最近點的查找

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

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

    帆帆帆6112022-01-22
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

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

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

    GhostRider9502022-01-21
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

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

    Just_for_Myself6702022-02-22
  • C#WPF 自定義雷達圖開發實例教程

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

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

    WinterFish13112021-12-06
  • C#Unity3D實現虛擬按鈕控制人物移動效果

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

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

    shenqingyu060520232410972022-03-11
1216
主站蜘蛛池模板: 中文日韩在线 | 国产视频1区 | 久久久久久亚洲精品 | 伊人中文| 蜜桃成人在线观看 | 精品久久久久久久久久久久久久久久久久久 | 成人羞羞视频在线看网址 | 国产麻豆一区二区三区 | 91免费在线播放 | 色婷婷精品国产一区二区三区 | 免费的成人毛片 | 国产一区二区三区不卡在线观看 | 欧美精品一二区 | 欧美一区二区三区男人的天堂 | 可以看av的网站 | 久久精品免费观看 | 成人午夜精品久久久久久久蜜臀 | 欧美在线观看视频一区二区 | 久久综合成人精品亚洲另类欧美 | 精品国产欧美一区二区 | 久久久久999| 久综合网| 影音先锋男人网 | 亚洲精品99| 久久一级淫片 | 国产在线一区二区三区 | 久久久精品国产一区 | 成人网页在线 | 黄久久久| 天天爽视频 | 成人福利网 | 亚洲精品久久久久久久久久久 | 日本不卡高字幕在线2019 | 在线色av | 中文字幕日韩久久 | 日本精品久久 | 精品久久久久一区二区国产 | 天天操网 | 欧美视频一二三区 | 色综合一区二区 | 国产在线观看一区 |