c#圖象截取實例。本站提示廣大學習愛好者:(c#圖象截取實例)文章只能為提供參考,不一定能成為您想要的結果。以下是c#圖象截取實例正文
本文實例講述了c#圖象截取的完成辦法。分享給年夜家供年夜家參考。詳細以下:
圖象截取的相干代碼以下:
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Image pic = new Bitmap(this.Width, this.Height);
Graphics graphic = Graphics.FromImage(pic);
graphic.CopyFromScreen(new Point(this.Location.X, this.Location.Y), new Point(0, 0), new Size(this.Width, this.Height));
pic.Save(@"d:/test.jpeg", ImageFormat.Jpeg);
graphic.Dispose();
}
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest, //目的裝備的句柄
int nXDest, // 目的對象的左上角的X坐標
int nYDest, // 目的對象的左上角的X坐標
int nWidth, // 目的對象的矩形的寬度
int nHeight, // 目的對象的矩形的長度
IntPtr hdcSrc, // 源裝備的句柄
int nXSrc, // 源對象的左上角的X坐標
int nYSrc, // 源對象的左上角的X坐標
System.Int32 dwRop // 光柵的操作值
);
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
private static extern IntPtr CreateDC(
string lpszDriver, // 驅動稱號
string lpszDevice, // 裝備稱號
string lpszOutput, // 無用,可以設定位"NULL"
IntPtr lpInitData // 隨意率性的打印機數據
);
private void Form1_SizeChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
this.Hide();
IntPtr dc1 = CreateDC("DISPLAY", null,
null, (IntPtr)null);
//創立顯示器的DC
Graphics g1 = Graphics.FromHdc(dc1);
//由一個指定裝備的句柄創立一個新的Graphics對象
Bitmap MyImage =
new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height, g1);
//依據屏幕年夜小創立一個與之雷同年夜小的Bitmap對象
Graphics g2 = Graphics.FromImage(MyImage);
//取得屏幕的句柄
IntPtr dc3 = g1.GetHdc();
//取得位圖的句柄
IntPtr dc2 = g2.GetHdc();
//把以後屏幕捕捉到位圖對象中
BitBlt(dc2, 0, 0, Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
dc3, 0, 0, 13369376);
//把以後屏幕拷貝到位圖中
g1.ReleaseHdc(dc3);
//釋放屏幕句柄
g2.ReleaseHdc(dc2);
//釋放位圖句柄
Bitmap img = new Bitmap(MyImage, 800, 600);
//縮放圖片到800*600
img.Save("d:\\MyJpeg.jpg", ImageFormat.Jpeg);
MessageBox.Show("曾經把以後屏幕保留到" +
"C:\\MyJpeg.jpg文件中!");
this.Show();
}
願望本文所述對年夜家的C#法式設計有所贊助。