标题:GetPixel API 问题 C#编程
只看楼主
zhangdycool
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-10-29
结帖率:100%
已结贴  问题点数:20 回复次数:5 
GetPixel API 问题 C#编程
我在窗体上创建了一个PictrueBox控件,并将PictrueBox的背景颜色设为红色。想在鼠标按下时,获取当前坐标的颜色,查了很多资料也不知道怎么解决,求解决,本人初次使用C#调用API。在此谢过。
以下是我的声明及使用
using System.Runtime.InteropServices;
[DllImport("gdi32.dll")]
public static extern System.UInt32 GetPixel(IntPtr hdc, int xPos, int yPos);
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            Graphics gra = Graphics.FromHwnd(((PictureBox)sender).Handle);
            IntPtr hdc = gra.GetHdc();
            label5.BackColor = Color.FromArgb(Convert.ToInt32(GetPixel(hdc, e.X, e.Y)));
        }

搜索更多相关主题的帖子: private public 资料 
2013-10-29 17:57
afdoa83
Rank: 4
等 级:业余侠客
威 望:7
帖 子:43
专家分:262
注 册:2012-7-31
得分:14 
该像素点必须在当前剪辑区的边界之内。并不是所有设备都支持GetPixel函数。应用程序应调用GetDeviceCaps函数来确定指定的设备是否支持该函数。
你需要用函数指定与设备无关,使用GetPixel获取RGB值只是读内存。(不一定非得用GetDeviceCaps)
2013-10-29 18:27
zhangdycool
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-10-29
得分:0 
能不能提供一个具体一点的思路,
2013-10-29 18:38
zhangdycool
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-10-29
得分:0 
我把Graphics gra = Graphics.FromHwnd(((PictureBox)sender).Handle);//((PictureBox)sender).Handle为PictureBox的句柄
改成Graphics gra = Graphics.FromHwnd(PictureBox.Handle);效果是有了,但不正确。
2013-10-29 18:40
zhangdycool
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-10-29
得分:0 
我又仔细的看了一遍MSDN发现有这两句话:The pixel must be within the boundaries of the current clipping region.
Not all devices support GetPixel.
就是当前点必须在剪切区内这个剪切怎么确定呢,还有并不是所有设备都支持GetPixel
2013-10-29 19:33
zhangdycool
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-10-29
得分:0 
已经解决了。
2013-10-29 20:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-422715-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.285548 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved