我进行了如下实验,使用了如下代码:
Code
Bitmap img = new Bitmap(Screen.AllScreens[0].Bounds.Width,
Screen.AllScreens[0].Bounds.Height);
Graphics g = Graphics.FromImage(img);
g.CopyFromScreen(new Point(0, 0), new Point(0, 0),
Screen.AllScreens[0].Bounds.Size);
IntPtr imgHDC = g.GetHdc();//获取图片的设备上
然后对这个图分别取色,将值相减,但是每次结果都不一样,希望有知道的人解答一下
问题补充:
以上分别取色的代码如下
int netColor = img.GetPixel(x, y).ToArgb();
int apiColor = Win32Api.GetPixel(imgHDC, x, y);
int sub = netColor - apiColor;
其中x y是坐标点,循环取值,然后将差值输出,但是这个差值每次循环都不一样,很是奇怪
其实我有进行过另外一个实验,代码如下:
int ret = Color.Red.ToArgb() - 0xFF0000;//值为-16777216
int r = Color.FromArgb(0xFF0000 - 16777216).R;//值为255
int ret1 = Color.Green.ToArgb()-0x00FF00;//值为-16809728 这个不知道为什么会这样
int g = Color.FromArgb(0x00FF00 - 16777216).G;//值为255
int ret2 = Color.Blue.ToArgb() - 0x0000FF;//值为-16777216
int b = Color.FromArgb(0x0000FF - 16777216).B;//值为255
int ret3 = Color.FromArgb(123, 123, 123).ToArgb() - 0x7B7b7B;//值为-16777216
以上如果忽略掉绿色的那个值,可得出公式
net的色值=api的色值-16777216
但是很明显,两次实验的结果并不一致。对于其中原因我实在是想不明白了,希望哪个知道的不吝赐教一下。谢了。
分数不多,请见谅
土匪
|
初学一级
|
园豆:
160
提问于:2009-02-14 12:17