// x,y 分别为x轴,y轴坐标 返回SystemDrawingColor 可以直接显示
public SystemDrawingColor GetPixelColor(int x, int y)
{
IntPtr hdc = GetDC(IntPtrZero);
uint pixel = GetPixel(hdc, x, y);
ReleaseDC(IntPtrZero, hdc);
Color color = ColorFromArgb((int)(pixel & 0x000000FF),
(int)(pixel & 0x0000FF00) >> 8,
(int)(pixel & 0x00FF0000) >> 16);
return color;
}
private void timer_Tick(object sender, EventArgs e)
{
textBox1Text = GetPixelColor(CursorPositionX, CursorPositionY)RToString() + " " + GetPixelColor(CursorPositionX, CursorPositionY)GToString() + " " + GetPixelColor(CursorPositionX, CursorPositionY)BToString();
}
使用这个函数,
COLORREF
GetPixel(
HDC
hdc,
//
handle
to
DC
int
nXPos,
//
x-coordinate
of
pixel
int
nYPos
//
y-coordinate
of
pixel
);
可以调用之前调用GerCursorPos
来获取鼠标在屏幕上的位置,
如果仅仅是为了取色的话,桌面窗口的HDC的获取,调用GetDC(NULL)来获取到,(不知到delphi里NULL写成什么样子,写成
GetDC(0)也可以。)
在把GerCursorPos
获取的屏幕坐标也给传过去,GetPixel即可返回屏幕坐标的相应颜色值了。
COLORREF
是一个
DWORD
类型,自己分析高低为就可以知道RGB值了。
可以参考使用GetRValue,GetGValue,GetBValue
宏
mBitmap2getPixels(pixels, 0, w, 0, 0, w, h);//获得mBitmap2的像素颜色值,赋值给pixels,第三个参数为一行的像素数(矩形的宽)mBitmap3 = BitmapcreateBitmap(pixels, 0, w, w, h, BitmapConfigARGB_8888);//用上面的pixels颜色数组创建一个Bitmap应该能帮到你吧
我是用MATLAB+Excel 完成的 ,MATLAB和Excel可以用exlink 插件联系起来,这样用Excel就可以调用MATLAB。
用MATLAB的imread命令读取成为矩阵,用EXLINK传递单Excel,并利用VBA脚本给Excel单元格赋背景色。这应该是最简单的方法了。
给你个简单的给单元格赋值的程序,随机生成三个数,并用这三个数给A2单元格设置背景颜色。你改改,加个循环就能用。
分割线
再回来看发现我可能误解你的问题了,你只是需要获取的RGB矩阵,不需要吧单元格背景设置成相应的颜色的话,我还是建议你用MATLAB,一个imread命令就搞定了
Sub test()Dim a As Integer
Dim b As Integer
Dim c As Integer
a = Int(Rnd() 255)
b = Int(Rnd() 255)
c = Int(Rnd() 255)
Cells(1, 1) = a
Cells(1, 2) = b
Cells(1, 3) = c
Cells(2, 1)InteriorColor = RGB(a, b, c)
MsgBox "success", vbOKOnly, "report"
End Sub
以上就是关于C#新手 如何获得当前坐标像素点的颜色信息。。。全部的内容,包括:C#新手 如何获得当前坐标像素点的颜色信息。。。、如何用delphi编程获取其他程序窗口内的象素颜色信息等、android中如何获得像素点的颜色值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)