303
Chương 8: Đồ họa, đa phương tiện, và in ấn
g.DrawString(text, font, Brushes.Black, 50, 50 + i*60);
}
// Hiển thị hình bitmap trong PictureBox.
pictureBox1.BackgroundImage = b;
pictureBox1.Size = b.Size;
}
}
6.
6.
Th c hi n ch p màn hình Desktop
ự ệ
ụ
Th c hi n ch p màn hình Desktop
ự ệ
ụ
Bạn cần lấy ảnh chụp của màn hình Desktop hiện thời.
Sử dụng các lời gọi Win32 API
GetDesktopWindow
,
GetDC
, và
ReleaseDC
trong thư
viện user32.dll. Ngoài ra, sử dụng
GetCurrentObject
trong thư viện gdi32.dll.
.NET Framework không cung cấp lớp nào thực hiện việc chụp toàn bộ màn hình (thường được
đề cập là cửa sổ Desktop). Tuy nhiên, bạn có thể truy xuất các đặc tính này bằng cách sử dụng
P/Invoke với Win32 API.
Bước đầu tiên là tạo một lớp đóng gói các hàm Win32 API bạn cần sử dụng. Lớp dưới đây sẽ
khai báo các hàm này và sử dụng chúng trong phương thức công khai
Capture
để trả về một
đối tượng .NET
Image
chứa cửa sổ Desktop:
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
public class DesktopCapture {
[DllImport("user32.dll")]
private extern static IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
private extern static IntPtr GetDC(IntPtr windowHandle);
[DllImport("gdi32.dll")]
private extern static IntPtr GetCurrentObject(IntPtr hdc,
ushort objectType);
[DllImport("user32.dll")]
private extern static void ReleaseDC( IntPtr hdc );