最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于C#實(shí)現(xiàn)Windows桌面截圖功能

 更新時間:2025年05月12日 11:29:25   作者:編程筆記in  
在學(xué)習(xí)C# 的過程中,通過案例是比較高效的一種學(xué)習(xí)方式,下面我將介紹如何使用C#開發(fā)一個簡單的Windows桌面截圖程序,這個程序?qū)崿F(xiàn)了基本的屏幕截圖功能,感興趣的小伙伴跟著小編一起來看看吧

前言

  • 在學(xué)習(xí)C# 的過程中,通過案例是比較高效的一種學(xué)習(xí)方式。下面我將介紹如何使用C#開發(fā)一個簡單的Windows桌面截圖程序。這個程序?qū)崿F(xiàn)了基本的屏幕截圖功能,包括捕獲全屏、預(yù)覽圖像以及保存截圖文件。通過該案例,可以了解到Windows窗體應(yīng)用(WinForms)的開發(fā)知識,并理解GDI+繪圖技術(shù)、文件對話框的使用以及事件驅(qū)動編程的核心概念。
  • 實(shí)現(xiàn)的功能雖然簡單,但涵蓋了實(shí)際開發(fā)中的關(guān)鍵流程,如UI設(shè)計、功能邏輯實(shí)現(xiàn)、異常處理等。

知識梳理

實(shí)現(xiàn)功能:

  • 1、點(diǎn)擊按鈕截圖。
  • 2、截圖顯示、拖動縮放、功能。
  • 3、截圖保存。

實(shí)現(xiàn)步驟:

  • 1、獲取屏幕邊界。
  • 2、創(chuàng)建位圖對象。
  • 3、屏幕內(nèi)容捕獲
  • 4、內(nèi)容傳遞。
  • 5、顯示截圖編輯器窗口。
  • 核心方法1: Screen.GetBounds(Point)

    • 該方法用于獲取主顯示器的邊界矩形。
    • 一般從屏幕左上角(0,0)開始計算。
  • 核心方法2: CopyFromScreen(Point,Point,Point)

    • 該方法實(shí)現(xiàn)屏幕內(nèi)容拷貝。
    • 參數(shù)一:源位置左上角坐標(biāo)。
    • 參數(shù)二:目標(biāo)位置左上角坐標(biāo)。
    • 參數(shù)三:要拷貝的區(qū)域大小。
  • 自定義顯示圖像窗體: FrmScreenshotEditor

  • 控件代碼在文末鏈接,需要者自行下載。

運(yùn)行效果

代碼

主窗體代碼

  • 主窗體中添加截圖按鈕,實(shí)現(xiàn)點(diǎn)擊按鈕截圖功能,在截圖前隱藏該窗體主窗體,否則會截到主窗體,添加一定的延時,否則還是會截到主窗體,因?yàn)橹鞔绑w可能未隱藏成功。截圖成功后再顯示主窗體和子窗體。
public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
        this.CenterToParent();
        this.MaximumSize = this.Size;
        this.MinimumSize = this.Size;
    }
    private void Btn_Screenshot_Click(object sender, EventArgs e)
    {
        this.Hide();
        Thread.Sleep(500);
        Screenshot();
    }
    /// 截圖方法
    private void Screenshot()
    {
        try
        {
            // 獲取屏幕尺寸
            Rectangle bounds = Screen.GetBounds(Point.Empty);
            // 創(chuàng)建位圖對象
            using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
            {
                // 創(chuàng)建繪圖對象
                using (Graphics g = Graphics.FromImage(bitmap))
                {
                    // 將屏幕內(nèi)容復(fù)制到位圖中
                    g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
                }
                this.Show();
                //顯示圖像
                FrmScreenshotEditor frmScreenshotEditor = new FrmScreenshotEditor();
                frmScreenshotEditor.Image = bitmap;
                frmScreenshotEditor.ShowDialog();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show($"截圖失敗: {ex.Message}", "錯誤",MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

截圖編輯窗體

  • 在截圖編輯子窗體中添加自定義圖像顯示控件,該控件需要實(shí)現(xiàn)圖像的滾動和縮放功能。添加一個Image屬性,用于設(shè)置顯示的圖片。最后添加一個保存按鈕,實(shí)現(xiàn)圖像保存功能。
public partial class FrmScreenshotEditor :WinFormBase
 {
     public Image Image
     {
         get => uvCanvas.Image;
         set
         {
             uvCanvas.Image = value;
             Invalidate();
         }
     }
     public FrmScreenshotEditor()
     {
         InitializeComponent();
         this.CenterToParent();
         this.WindowState = FormWindowState.Maximized;
     }
     private void btn_Save_Click(object sender, System.EventArgs e)
     {
         SaveFileDialog  saveFileDialog = new SaveFileDialog();
         saveFileDialog.FileName = "截圖1";     //設(shè)置初始文件名
         saveFileDialog.Filter= "PNG Image|*.png|JPEG Image|*.jpg|BMP Image|*.bmp";
         if (saveFileDialog.ShowDialog()== DialogResult.OK)
         {
             string extension = Path.GetExtension(saveFileDialog.FileName).ToLower();
             ImageFormat imageFormat;
             switch (extension)
             {
                 case ".png":
                     imageFormat = ImageFormat.Png;
                     break;
                 case ".jpg":
                     imageFormat = ImageFormat.Jpeg;
                     break;
                 case ".bmp":
                     imageFormat = ImageFormat.Bmp;
                     break;
                 default:
                     imageFormat = ImageFormat.Png;
                     break;
             }
             try
             {
                 Image.Save(saveFileDialog.FileName, imageFormat);
                 MessageBox.Show($"圖片已成功保存至: {saveFileDialog.FileName}");
             }
             catch (Exception ex)
             {
                 MessageBox.Show($"保存圖片時出錯: {ex.Message}");
             }
         }
     }
 }

總結(jié)

  • 通過實(shí)現(xiàn)案例學(xué)習(xí)編程是一種高效的學(xué)習(xí)方法。這種學(xué)習(xí)方式將抽象概念具體化。通過上面的截圖程序,我們實(shí)際應(yīng)用了窗體控件、事件處理、GDI+繪圖等核心知識點(diǎn),比單純學(xué)習(xí)理論更容易理解和記憶。
  • 其次通過案例可以獲得正向反饋,看到自己編寫的代碼真正實(shí)現(xiàn)功能,極大提升了學(xué)習(xí)動力和成就感。
  • 最后,該案例后面可以自己擴(kuò)展性,當(dāng)你掌握了更多的基礎(chǔ)知識后,可以逐步添加區(qū)域選擇、圖像編輯等更高級的功能。

最后

以上就是基于C#實(shí)現(xiàn)Windows桌面截圖功能的詳細(xì)內(nèi)容,更多關(guān)于C# Windows桌面截圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c#中虛函數(shù)的相關(guān)使用方法

    c#中虛函數(shù)的相關(guān)使用方法

    若一個實(shí)例方法聲明前帶有virtual關(guān)鍵字,那么這個方法就是虛方法。
    2013-02-02
  • 在 Visual Studio 中查看反匯編代碼

    在 Visual Studio 中查看反匯編代碼

    這篇文章主要介紹了在 Visual Studio 中查看反匯編代碼的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • C#實(shí)現(xiàn)將RTF文檔高效轉(zhuǎn)換為PDF格式的兩種方法詳解

    C#實(shí)現(xiàn)將RTF文檔高效轉(zhuǎn)換為PDF格式的兩種方法詳解

    在現(xiàn)代辦公自動化和文檔處理場景中,經(jīng)常需要將不同格式的文檔統(tǒng)一轉(zhuǎn)換為?PDF?格式,本文將詳細(xì)介紹如何使用?C#?實(shí)現(xiàn)從?RTF?到?PDF?的轉(zhuǎn)換,并提供兩種主流方案,希望對大家有所幫助
    2026-03-03
  • C#實(shí)現(xiàn)簡單的飛行棋游戲

    C#實(shí)現(xiàn)簡單的飛行棋游戲

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡單的飛行棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#中comboBox實(shí)現(xiàn)三級聯(lián)動

    C#中comboBox實(shí)現(xiàn)三級聯(lián)動

    給大家分享了C#中comboBox實(shí)現(xiàn)三級聯(lián)動的全部代碼,代碼經(jīng)過測試,有興趣的朋友跟著做一下。
    2018-03-03
  • C#創(chuàng)建壓縮文件的實(shí)現(xiàn)代碼

    C#創(chuàng)建壓縮文件的實(shí)現(xiàn)代碼

    本篇文章主要介紹了C# 創(chuàng)建壓縮文件的實(shí)現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • C#使用CefSharp實(shí)現(xiàn)內(nèi)嵌網(wǎng)頁詳解

    C#使用CefSharp實(shí)現(xiàn)內(nèi)嵌網(wǎng)頁詳解

    這篇文章主要介紹了C# WPF里怎么使用CefSharp嵌入一個網(wǎng)頁,并給出一個簡單示例演示C#和網(wǎng)頁(JS)的交互實(shí)現(xiàn),感興趣的小伙伴可以了解一下
    2023-04-04
  • C#中DropDownList動態(tài)生成的方法

    C#中DropDownList動態(tài)生成的方法

    這篇文章主要介紹了C#中DropDownList動態(tài)生成的方法,實(shí)例分析了C#中DropDownList的使用技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-03-03
  • 使用C#將Excel文件轉(zhuǎn)換為SVG的實(shí)現(xiàn)代碼

    使用C#將Excel文件轉(zhuǎn)換為SVG的實(shí)現(xiàn)代碼

    SVG是Scalable Vector Graphics的縮寫,是一種適合在Web上使用的矢量圖像格式,與其他圖像格式相比,SVG具有許多優(yōu)勢,其中最顯著的一點(diǎn)是分辨率無關(guān)性,有時,為了在網(wǎng)頁中展示內(nèi)容,你可能需要將Excel文件轉(zhuǎn)換為SVG,本文將演示如何通過C#和VB.NET以編程方式將Excel轉(zhuǎn)換為SVG
    2025-12-12
  • Unity之繞軸進(jìn)行旋轉(zhuǎn)的操作

    Unity之繞軸進(jìn)行旋轉(zhuǎn)的操作

    這篇文章主要介紹了Unity之繞軸進(jìn)行旋轉(zhuǎn)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評論

汪清县| 陵川县| 建宁县| 玉树县| 芷江| 吉木萨尔县| 新巴尔虎左旗| 屏山县| 个旧市| 桂平市| 龙海市| 射洪县| 广昌县| 宝兴县| 灵寿县| 确山县| 宜兰市| 界首市| 开平市| 土默特左旗| 葵青区| 鄂托克前旗| 武城县| 九寨沟县| 长治县| 北安市| 九江市| 信丰县| 绩溪县| 鄂托克前旗| 定陶县| 武宣县| 苏州市| 外汇| 乌苏市| 尖扎县| 营山县| 富阳市| 礼泉县| 颍上县| 满城县|