http://bbs.csdn.net/topics/390356166
namespace WpfApplication1
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
var desk = GetDesktopWindow();
var dc = GetDC(desk);
var pix = GetPixel(dc, 100, 200);
MessageBox.Show(pix.ToString());
} public const string USER32 = "user32.dll"; [DllImport(USER32, EntryPoint = "GetDesktopWindow")]
public static extern IntPtr GetDesktopWindow();
[DllImport(USER32, EntryPoint = "GetDC", SetLastError = true)]
public static extern IntPtr GetDC(IntPtr hWnd);
[DllImport("gdi32.dll")]
public static extern uint GetPixel(IntPtr hWnd, int XPos, int YPos);
}
}以上用GetPixel API取屏幕颜色的办法,但是在WIN2008不行
那还有没有其他方法
谢谢
namespace WpfApplication1
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
var desk = GetDesktopWindow();
var dc = GetDC(desk);
var pix = GetPixel(dc, 100, 200);
MessageBox.Show(pix.ToString());
} public const string USER32 = "user32.dll"; [DllImport(USER32, EntryPoint = "GetDesktopWindow")]
public static extern IntPtr GetDesktopWindow();
[DllImport(USER32, EntryPoint = "GetDC", SetLastError = true)]
public static extern IntPtr GetDC(IntPtr hWnd);
[DllImport("gdi32.dll")]
public static extern uint GetPixel(IntPtr hWnd, int XPos, int YPos);
}
}以上用GetPixel API取屏幕颜色的办法,但是在WIN2008不行
那还有没有其他方法
谢谢
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 // 光栅的操作值
);
这个方法不知道win2008能用不
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文件!");有个WinFrom的,但在WPF里面不行
谢谢