求用鼠标截取图像功能c#代码

 我来答
149032105
2008-08-20 · TA获得超过756个赞
知道小有建树答主
回答量:1029
采纳率:0%
帮助的人:679万
展开全部
10分?可耻啊

Declare Function BitBlt Lib "gdi32" Alias "BitBlt"
(ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
hDestDC As Long, //目标设备环境的句柄
x As Long, //目标设备环境的矩形区域的左上角的x坐标
y As Long, //目标设备环境的矩形区域的左上角的y坐标
nWidth As Long, //目标设备环境的矩形区域的宽度值
nHeight As Long, //目标设备环境的矩形区域的高度值
hSrcDC As Long, //源设备环境的句柄
xSrc As Long, //源设备环境的矩形区域的左上角的x坐标
ySrc As Long, //源设备环境的矩形区域的左上角的y坐标
dwRop As Long, //光栅操作符
dwRop参数是光栅操作代码(Rop),它是指源位图与目标位图以及图案刷的颜色值进行布尔运算的方式,以下列出了常用的光栅操作码及含义
BLACKNESS 用黑色填充目标矩形区域.
DSTINVERT 将目标矩形图象进行反相.
MERGECOPY 将源矩形图象与指定的图案刷(Pattern)进行布尔"与"运算.
MERGEPAINT 将源矩形图形经过反相后,与目标矩形图象进行布尔"或"运算.
NOTSRCCOPY 将源矩形图象经过反相后,复制到目标矩形上.
NOTSRCERASE 先将源矩形图象与目标矩形图象进行布尔"或"运算,然后再将得图象进行反相.
PATCOPY 将指定的图案刷复制到目标矩形上.
PATINVERT 将指定的图案刷与目标矩形图象进行布尔"异或"运算.
PATPAINT 先将源矩形图象进行反相,与指定的图案刷进行布尔"或"运算,再与目标矩形图象进行布尔"或"运算SRCAND 将源矩形图象与目标矩形图象进行布尔"与"运算.
SRCCOPY 将源矩形图象直接复制到目标矩形上.
SRCERASE 将目标矩形图象进行反相,再与源矩形图象进行布尔"与"运算.
SRCINVERT 将源矩形图象与目标矩形图象进行布尔"异或"运算.
SRCPAINT 将源矩形图象与目标矩形图象进行布尔"或"运算.
WHITENESS 用白色填充目标矩形区域.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;

namespace TestForm
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
this.Load += new EventHandler(Form1_Load);
}
Graphics gc1;
Graphics gc2;
Image MyImage;

void Form1_Load(object sender, EventArgs e)
{
//gc = this.CreateGraphics();
//MyImage = new Bitmap(1,1, gc);
//gc2 = Graphics.FromImage(MyImage);
//dc1 = gc.GetHdc();
//dc2 = gc2.GetHdc();

}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{

gc1 = this.CreateGraphics();
MyImage = new Bitmap(2, 2, gc1);
gc2 = Graphics.FromImage(MyImage);

IntPtr dc1 = gc1.GetHdc();
IntPtr dc2 = gc2.GetHdc();

bool b = BitBlt(dc2, 0, 0, 2, 2, dc1, 0, 0, 13369376);
Color myColor = new Color();
//c = b.GetPixel(i, j);

Bitmap bitmap = new Bitmap(MyImage);

myColor = bitmap.GetPixel(1, 1);

label1.Text = myColor.G.ToString();
label2.Text = myColor.B.ToString();
label3.Text = myColor.R.ToString();
label4.Text = myColor.A.ToString();

//释放掉Bitmap的DC
gc1.ReleaseHdc(dc1);
gc2.ReleaseHdc(dc2);
}

[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 // 光栅的处理数值
);

//hDestDC As Long, //目标设备环境的句柄
//x As Long, //目标设备环境的矩形区域的左上角的x坐标
//y As Long, //目标设备环境的矩形区域的左上角的y坐标
//nWidth As Long, //目标设备环境的矩形区域的宽度值
//nHeight As Long, //目标设备环境的矩形区域的高度值
//hSrcDC As Long, //源设备环境的句柄
//xSrc As Long, //源设备环境的矩形区域的左上角的x坐标
//ySrc As Long, //源设备环境的矩形区域的左上角的y坐标
//dwRop As Long, //光栅操作符
//dwRop参数是光栅操作代码(Rop),它是指源位图与目标位图以及图案刷的颜色值进行布尔运算的

}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式