请教图象的热区问题(100分)

  • 主题发起人 主题发起人 Adsky
  • 开始时间 开始时间
A

Adsky

Unregistered / Unconfirmed
GUEST, unregistred user!
在一幅图片上用画笔的形式画出多个热区,热区的坐标信息要求记录到数据库(pardox)
里面;当图片在正常显示的时候不出现热区,而当鼠标在图片上移动时,捕捉到热区时就
把当前所在的热区范围显示出来。哪位大虾写过这方面的程序,能否指点一下。
 
调用函数PointInRect(constPoint:TPoint;constRect:TRect):Boolean;
如果在热区里,画出热区的范围就可以了
 
可以用WinAPI里的Region实现
 
应该应用PtInRegion来实现;
首先将记录热区的所有点,来创建一个区域,
利用CreatePolygonRgn;
当鼠标捕捉到热区,就判断鼠标坐标是否位于区域内,
是,则显示!
 
我也想知道!
 
哪位大虾做过这方面的工作的,给个实际详细的例子来看看怎样?
my e-mail:anoly@21cn.com
 
简单有效的方法:用两个Image控件,底下一层显示数据库中存储的图片,上面一层设为透明用来设定热区
可以在上一层的onMousemove 事件中判断鼠标是否到达热区,可以在该层画些东东来显示、标记
该热区,这样可不破坏下曾原始图象。
 
数据库中除存储图片数据外,再用TRect的形式存储若干个热区数据
用TImage显示图片,根据热区数据动态生成相应的TPainBox,这样比用TImage设为透明来
做热区节约系统资源,而且不会有闪烁,其他原理跟楼上的一样
 
我见国有这样的控件的,网上游下载
 
深度历险:
HOTIMAGE.ZIP
改良版 TImage 构件,能在其上定义不同的区域,每个区域都能接收来自使用者的各项操作事件,提供编辑区域的属性值编辑器 ( 2.2 版,附源码 ),作者:Alexander A. Miachin。
 
to jialiang:
你说的那个控件没找到,能否发一个给我。
my e-mail:dasea@s63.net,谢谢
 
最简单的是在MOUSEMOVE里:

if (x>10&amp;&amp;y>10&amp;&amp;x<100&amp;&amp;y<100)
{
ShowMessage('a');
}
 
TO:卷起千堆雪tyn 佩服你们的API.可是如果为了吃饭的话没有必要那么复杂,
TO:Adsky,DELPHI大本营里也有
 
我也想知道!!
 

Similar threads

后退
顶部