为什么加入全屏就不能把图片显示了呢
不加入this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;这句话就行加入了就不能工作了
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
namespace 截屏
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
//this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
}
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest, // 目标 DC的句柄
int nXDest,
int nYDest,
int nWidth,
int nHeight,
IntPtr hdcSrc, // 源DC的句柄
int nXSrc,
int nYSrc,
System.Int32 dwRop // 光栅的处理数值
);
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern IntPtr CreateDC(
string lpszDriver, // 驱动名称
string lpszDevice, // 设备名称
string lpszOutput, // 无用,可以设定位"NULL"
IntPtr lpInitData // 任意的打印机数据
);
private void button1_Click(object sender, EventArgs e)
{
//获得当前屏幕的大小
Rectangle rect = new Rectangle();
rect = Screen.GetWorkingArea(this);
//创建一个以当前屏幕为模板的图象
Graphics g1 = this.CreateGraphics();
//创建以屏幕大小为标准的位图
Image MyImage = new Bitmap(rect.Width, rect.Height, g1);
Graphics g2 = Graphics.FromImage(MyImage);
//得到屏幕的DC
IntPtr dc1 = g1.GetHdc();
//得到Bitmap的DC
IntPtr dc2 = g2.GetHdc();
//调用此API函数,实现屏幕捕获
BitBlt(dc2, 0, 0, rect.Width, rect.Height, dc1, 0, 0, 13369376);
//释放掉屏幕的DC
g1.ReleaseHdc(dc1);
//释放掉Bitmap的DC
g2.ReleaseHdc(dc2);
//以JPG文件格式来保存
MyImage.Save(@"c:\Capture.jpg", ImageFormat.Jpeg);
MessageBox.Show("当前屏幕已经保存为C盘的capture.jpg文件!");
}
public Bitmap getscreen(int left, int top, int width, int height)
{
IntPtr dc1 = CreateDC("DISPLAY", null, null, (IntPtr)null);
Graphics newGraphics = Graphics.FromHdc(dc1);
Bitmap img = new Bitmap(width, height, newGraphics);
Graphics thisGraphics = Graphics.FromImage(img);
IntPtr dc2 = thisGraphics.GetHdc();
IntPtr dc3 = newGraphics.GetHdc();
BitBlt(dc2, 0, 0, width, height, dc3, left, top, 13369376);
thisGraphics.ReleaseHdc(dc2);
newGraphics.ReleaseHdc(dc3);
return img;
}
private void button2_Click(object sender, EventArgs e)
{
Image MyImage = getscreen(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
MyImage.Save(@"c:\Capture.png", ImageFormat.Png);
MessageBox.Show("当前屏幕已经保存为C盘的capture.jpg文件!");
Graphics g1 = this.CreateGraphics();
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
g1.DrawImage(MyImage, new Point(100, 100));
}
}
}
--------------------编程问答--------------------
God好长.
补充:.NET技术 , C#