社区
Delphi
帖子详情
怎样获得屏幕像素的颜色值?
dongcan
2000-04-03 05:48:00
我需要在窗体中用image控件来显示地图,怎样通过鼠标实现对地图的不同行政区的识别以
进入不同的数据库系统?我打算用颜色区分不同的不规则的行政区,实现鼠标的Click事件
但不知应怎样编写代码,希望各位高手援手。
...全文
300
5
打赏
收藏
怎样获得屏幕像素的颜色值?
我需要在窗体中用image控件来显示地图,怎样通过鼠标实现对地图的不同行政区的识别以 进入不同的数据库系统?我打算用颜色区分不同的不规则的行政区,实现鼠标的Click事件 但不知应怎样编写代码,希望各位高手援手。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
eaglet
2000-04-05
打赏
举报
回复
如果是JPG,可以修改delphi的jpeg.pas 这个UNIT 来实现
不知dongcan兄是否要求对JPG图象处理,如只是对于BMP,
以上方法足矣
Brain兄将 (sender as TImage) 改为Image1 当然是可以的
但我个人认为影响程序的维护性.
比如你如果在Image2对象的onmousedown事件中也要执行上述
代码,就需要重新再一遍代码.虽然只是改动了一个字.
eaglet
2000-04-04
打赏
举报
回复
//以下代码 当你的鼠标点击到TImage对象上时将自动把Label1对象的Caption属性置为鼠标所在点的颜色值,不知你是否满意,如有问题可以Email给我
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Label1.Caption := IntTostr((sender as TImage).Canvas.Pixels[x,y]);
end;
Brain
2000-04-04
打赏
举报
回复
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Label1.Caption := IntTostr(Image1.Canvas.Pixels[x,y]);
end;
//image只能放bmp图才能用Canvas.用其他的(JPG等)都不行,eaglet兄的也只对BMP有效。
Lin
2000-04-03
打赏
举报
回复
It's Too Simple:
1、对于不规则的区域选取,网络上有现成的控件,找不到我可以G个给你;
2、最好在OnMouseMove返回颜色:Canvas.Pixels[X, Y]。
forgettor
2000-04-03
打赏
举报
回复
试试API之GetPixel函数
Delphi追踪
屏幕
像素
点
颜色
值
及抓取
屏幕
.rar
Delphi追踪
屏幕
像素
点
颜色
值
及抓取
屏幕
,鼠标运行检测及截图演示Delphi源程序,跟踪象素区域、设置鼠标定时点击
像素
点,测试监视的
像素
点,不明白的看看测试截图就知道了,和鼠标操作密切相关的一个例子。
VC 获取
屏幕
任意
像素
颜色
值
-取色器源码.rar
VC 获取
屏幕
任意
像素
颜色
值
-取色器源码,本取色程序可以方便地使你获取你喜欢的
屏幕
上的
颜色
,并且能够以COLORREF或网页中的16进制的形式显示,而且还可以设置自动的将
颜色
值
复制到剪贴板上,以方便使用 。你还可以设置自己的热键来显示/隐藏主窗体、设置窗口总在最前面、启动时最小化(隐藏)、
屏幕
取色时隐藏主窗口、保存最近所取的
颜色
、自动将
颜色
值
复制到剪贴板上。
vb.net 获取
屏幕
某
像素
点
颜色
!!! 取坐标
像素
的
颜色
!获取指定点
颜色
自己写的vb.net代码,压缩包是整个工程,打开后运行可看到效果,输入
屏幕
坐标,X,Y,点击按钮,窗口背景色就编程了坐标对应
像素
的
颜色
。 这个问题好多人问,我试了好多,有的好用,有的不好用。对于VB.NET总体讲有两种方法: 1.取得DC的color
值
:对于任何位置,可以取得它的DC然后得到COLOR
值
,但是对于透明UI位置的color,这个
颜色
不可以赋
值
给控件,因为它是透明的,而获取的UI位置不是透明的,这个
颜色
是可以用来赋
值
的,所以这个不通用。 2.采用获取
屏幕
截图,然后再取得到BITMAP的某
像素
颜色
,这个是通用的,但是消耗内存和CPU。网上有部分核心代码,但对于小菜们还是隔靴搔痒,我的代码直接可以拿来就用,也便于更改和调试。而且一点不浪费资源,因为我不取获取整个
屏幕
,而是根据需求,其实对于一个BITMAP,取一个点就行了。根本不费半点CPU和内存,具体看里面代码吧。
获取
屏幕
某
像素
、坐标
颜色
(包括透明的)
是vb.net程序,不是VB的,自己写的,压缩包里是工程文件,代码简洁,打开工程文件一看就明白,然后可以改成你自己需要的 使用方法是输入X,Y坐标,一点按钮,窗口背景色就变成XY所对应的
颜色
。 VB.NET获取
屏幕
某坐标
颜色
总体两种方法: 1一种是获取DC,然后直接获取对应坐标的COLOR
值
,但是如果你获取的那个坐标锁在UI是个透明或者半透明性质的,整个COLOR
值
就不能直接用来赋
值
给控件
颜色
。这种方法不通用。 2.通用的,是将
屏幕
保存成一个图片,然后取图片坐标
颜色
,这很浪费资源。我测试了一下,放到计时器里,每0.2秒运行一次,程序运行起来一直占用480到680M内存。本例子采用这个原理,但我优化了函数,其实取一个
像素
就可以,这和直接获取
像素
颜色
也差不多了,而且不费一点内存和CPU,CPU使用率0,内存不到5M。
通过鼠标获取
屏幕
颜色
值
屏幕
像素
颜色
获取,通过鼠标点击获取当前窗口中某点的
颜色
值
,并以RGB三个分量显示出来。
Delphi
5,388
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章