| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 773 人关注过本帖
标题: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
快速回复:GetPixel API 问题 C#编程
数据加载中...
 
   



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

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