激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 編程語言 - C# - C#實現小截屏軟件功能

C#實現小截屏軟件功能

2022-01-07 13:43威若·死丟丟 C#

這篇文章主要為大家詳細介紹了C#實現截圖軟件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

第一次寫博客,文筆較差,將就看吧

日常生活中會經常使用到截屏功能,使用最多的無非就是windows自帶的截圖工具、qq截圖和printscreen鍵,但要達到截圖到word或保存到文件,需要鼠標選擇多次。比如我們想截圖并將圖插入到word中,不需要保存圖片,我們希望直接點擊截圖按鈕,選擇截圖區域,ctrl+v簡單三步就行了(感覺說了好多廢話),切入正題。

1.基本功能

選擇屏幕區域后提醒你保存所截的圖片,或直接將所截圖片放到剪切板里(以便用ctrl+v粘貼)。

2.界面設計

界面很簡單,無非就是可實現以上功能的兩個按鈕和其他文字,見圖:

C#實現小截屏軟件功能

界面的屬性需要注意幾個問題:

1)窗口設為固定大小,并禁用窗口最大化(因為我們不希望窗口大小會變)

C#實現小截屏軟件功能

C#實現小截屏軟件功能

2)窗口最好設為頂置

C#實現小截屏軟件功能

3)把兩個文字label和兩個按鈕都放到一個panel里,以便于后面程序對控件屬性的操作

4)那么大的按鈕,最好改變一下它的樣式,還可以設置背景為gif動圖

C#實現小截屏軟件功能

3.功能實現

那么關鍵問題來了,怎么截圖呢?見下圖

C#實現小截屏軟件功能

原理其實很簡單,就是在點擊按鈕后,窗口變為全屏覆蓋在屏幕最上方,并變為半透明,使你能看到窗口下面的屏幕內容,然后拖動鼠標(此時其實是在軟件的主窗口上拖動,這樣就方便程序捕捉鼠標坐標了),根據坐標在屏幕上繪制選框,接著松開鼠標后,根據鼠標落下和松開的坐標,截取屏幕,最后保存或復制到剪切板。

4.敲代碼吧

 

?
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
using system;
using system.windows.forms;
using system.drawing;//繪圖要用
using system.threading;//延時函數要用
 
namespace 截屏
{
  public partial class form1 : form
  {
    bool mousedown = false, havepainted = false;
    point start, end;
    point start1, end1;
    size size = new size(0, 0);
    bool savefile = true;
    public form1()
    {
      initializecomponent();
    }
 
    private void button1_click(object sender, eventargs e)
    {
      readytocaptrue();
      savefile = true;
    }
 
    private void form1_mousedown(object sender, mouseeventargs e)
    {
      start = e.location;
      mousedown = true;
    }
 
    private void form1_mouseup(object sender, mouseeventargs e)
    {
      if (size.width != 0 && size.height != 0)
      {
        controlpaint.drawreversibleframe(new rectangle(start1, size), color.transparent, framestyle.dashed);
        havepainted = false;
      }
      end = e.location;
      if (start.x > end.x)
      {
        int temp = end.x;
        end.x = start.x;
        start.x = temp;
      }
 
      if (start.y > end.y)
      {
        int temp = end.y;
        end.y = start.y;
        start.y = temp;
      }
      this.opacity = 0.0;
      thread.sleep(200);
      if (end.x - start.x > 0 && end.y - start.y > 0)
      {
        bitmap bit = new bitmap(end.x - start.x, end.y - start.y);
        graphics g = graphics.fromimage(bit);
        g.copyfromscreen(start, new point(0, 0), bit.size);
        if (savefile)
        {
          savefiledialog savefiledialog = new savefiledialog();
          savefiledialog.filter = "png|*.png|bmp|*.bmp|jpg|*.jpg|gif|*.gif";
          if (savefiledialog.showdialog() != dialogresult.cancel)
          {
            bit.save(savefiledialog.filename);
          }
        }
        else
        {
          clipboard.setimage(bit);
        }
        g.dispose();
      }
      this.windowstate = formwindowstate.normal;
      this.formborderstyle = formborderstyle.fixedsingle;
      panel1.visible = true;
      this.opacity = 1;
      mousedown = false;
    }
 
    private void form1_mousemove(object sender, mouseeventargs e)
    {
      if (mousedown)
      {
        if (size.width != 0 && size.height != 0 && havepainted)
        {
          controlpaint.drawreversibleframe(new rectangle(start1, size), color.transparent, framestyle.dashed);
        }
        end1 = e.location;
        size.width = math.abs(end1.x - start.x);
        size.height = math.abs(end1.y - start.y);
        start1.x = (start.x > end1.x) ? end1.x : start.x;
        start1.y = (start.y > end1.y) ? end1.y : start.y;
 
        if (size.width != 0 && size.height != 0)
        {
          controlpaint.drawreversibleframe(new rectangle(start1, size), color.transparent, framestyle.dashed);
          havepainted = true;
        }
      }
    }
 
    private void button2_click(object sender, eventargs e)
    {
      readytocaptrue();
      savefile = false;
    }
 
    private void form1_load(object sender, eventargs e)
    {
 
    }
 
    private void readytocaptrue()
    {
      this.opacity = 0.1;
      panel1.visible = false;
      this.formborderstyle = formborderstyle.none;
      this.windowstate = formwindowstate.maximized;
    }
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

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

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

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

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

    C#實現XML文件讀取

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

    Just_for_Myself6702022-02-22
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

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

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

    吳 劍8332021-12-08
  • C#深入解析C#中的交錯數組與隱式類型的數組

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

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

    C#教程網6172021-11-09
  • C#Unity3D實現虛擬按鈕控制人物移動效果

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

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

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

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

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

    E-iceblue5012022-02-12
  • C#C#通過KD樹進行距離最近點的查找

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

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

    帆帆帆6112022-01-22
  • C#WPF 自定義雷達圖開發實例教程

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

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

    WinterFish13112021-12-06
主站蜘蛛池模板: 久久精品免费国产 | 一级毛片真人免费播放视频 | 天天夜夜草 | 久久久久久久久久久久久国产精品 | 中国3xxxx | 国产亚洲精品成人 | 性欧美极品xxxx欧美一区二区 | 一级毛片免费的 | 国产羞羞视频在线免费观看 | 精品亚洲一区二区三区 | 亚洲天堂在线电影 | 国产精品99久久久久久久vr | 91精品国啪老师啪 | 午夜精品成人一区二区 | 一区在线免费视频 | av免费av| 国产精品一区自拍 | 91精品动漫在线观看 | 欧美人与禽性xxxxx杂性 | 久久国产亚洲视频 | 日本一区二区视频在线观看 | 一区二区三区四区高清视频 | 羞羞的小视频 | 国产精品久久久久久久久久久久久久久久 | 古装三级在线观看 | 92精品国产自产在线 | 在线免费小视频 | 免费a级毛片永久免费 | 国产一级二级视频 | 国产精品久久亚洲 | 黄免费在线观看 | 国产成人精品免费视频大全最热 | 中文字幕在线观看1 | 国产精品色在线网站 | 亚洲人成中文字幕在线观看 | 欧美成视频在线观看 | 中文字幕在线日韩 | 亚洲天堂一级片 | 欧美成人国产va精品日本一级 | 国产一级毛片高清 | 一级免费特黄视频 |