如何在一张大图片上,定义若干形状不规则的热区,且热区能响应鼠标事件。(200分)

  • 主题发起人 主题发起人 胖熊
  • 开始时间 开始时间
什么东东?网页还是DELPHI程序?
 
当然是在Delphi中。
 
用 Region 实现。
相关 API 函数有:
CreatePolygonRgn: 创建多边形区域。
PtInRegion: 判断点是否在区域内。
等等。
 
哪有这方面的例程看吗?
 
请等一下。
 
<a href="http://www.csdn.net/Delphi/vcl/image/index.htm">
http://www.csdn.net/Delphi/vcl/image/index.htm</a>
hotimage.zip
 
专门有控件可以实现这一功能,在Delphi 深度历险
有下载,具体名字不记得了,不过在图象控件里
 
用TShape
1. 在 Form1 中安排一个 TImage, 并指定一张图片
2. 在 Form1 中 Image1 的位置中, 重叠放置一个 TShape
3. with Shape1:
set Brush.Style = bsClear
set Pen.Style = psClear
set Cursor = crCross

4. 为 Shape1 写 OnMouseUp 事件
procedure TForm1.Shape1MouseUp(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ShowMessage('Click');
end;

5. 执行这个程式

其实, 就是在 Image1 上放置一个 Shape, 由於 Shape的 pen 与 brush 都是 clear, 因此形成透明而可以看到叠在下面的图片, 事实上, 滑鼠指标的改变与click 都是针对 Shape; 如果要再作变化, 在图片与Shape 之间再夹一个图片, 不过暂时将它的 Visible 属性设为假值,等到滑鼠按下时, 让这个夹心图形显示出来, 利用这些技巧,可以让画面多很多有趣的变化
 
多人接受答案了。
 
后退
顶部