如题。

解决方案 »

  1.   

    用 Region 实现。
    相关 API 函数有:
      CreatePolygonRgn: 创建多边形区域。
      PtInRegion:       判断点是否在区域内。
      等等。 用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 属性设为假值,等到滑鼠按下时, 让这个夹心图形显示出来, 利用这些技巧,可以让画面多很多有趣的变化