
求用鼠标截取图像功能c#代码
1个回答
展开全部
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),它是指源位图与目标位图以及图案刷的颜色值进行布尔运算的
}
}
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),它是指源位图与目标位图以及图案刷的颜色值进行布尔运算的
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询