首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

純 C# 實現螢幕指定區域截圖:Graphics.CopyFromScreen 完整範例

     編輯:關於C#

拒絕 P/Invoke:純 Managed Code 截圖

呼叫 Windows API 雖可行,但破壞程式碼「和諧性」。.NET 2.0 提供 Graphics.CopyFromScreen 完美解決。

全螢幕截圖實作


private void btnFullScreen_Click(object sender, EventArgs e) {
    // 建立位圖容器
    Bitmap image = new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
                              Screen.PrimaryScreen.Bounds.Height);
    Graphics imgGraphics = Graphics.FromImage(image);
    
    // 複製螢幕內容到位圖
    imgGraphics.CopyFromScreen(0, 0, 0, 0, 
        new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height));
    
    // 存檔
    SaveImage(image);
}

private void SaveImage(Image image) {
    if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
        string fileName = saveFileDialog.FileName;
        string extension = Path.GetExtension(fileName);
        if (extension == ".jpg")
            image.Save(fileName, ImageFormat.Jpeg);
        else
            image.Save(fileName, ImageFormat.Bmp);
    }
}

關鍵點說明

  • Screen.PrimaryScreen.Bounds:取得主螢幕解析度
  • Graphics.FromImage:建立繪圖介面指向位圖
  • CopyFromScreen(srcX, srcY, destX, destY, size):從螢幕座標複製像素到位圖
  • 支援 .jpg、.bmp 格式儲存
  • 需 .NET Framework 2.0 以上環境

進階發展:區域選取截圖

作者正研發「拖曳選取區域截圖」功能(類似 QQ 截圖),完成後將公開原始碼。核心邏輯同樣使用 CopyFromScreen,差別在於動態計算選取矩形座標與大小。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved