怎样画出一个平行四边形并使其可以捕获点击其内部的鼠标事件(20分)

  • 主题发起人 主题发起人 TENTODBV
  • 开始时间 开始时间
T

TENTODBV

Unregistered / Unconfirmed
GUEST, unregistred user!
我想写个解魔方的程序,其中需要有用鼠标指定某个色块颜色的功能。现有一下问题需要解决:
1.魔方要画成立体的,这就使的其中的两个可见面的各小方块变成平行四边形了。DELPHI里没有现成的控件。有什么好的方法实现?
2。点击某平行四边形内部时如何判断是点击了哪个小块。
 
var
rgn:HRGN;

procedure TForm1.FormCreate(Sender: TObject);
var
ps:array[0..3] of TPoint;
begin
ps[0]:=Point(0,100);
ps[1]:=Point(200,100);
ps[2]:=Point(250,0);
ps[3]:=Point(50,0);
rgn:=CreatePolygonRgn(ps,4,ALTERNATE);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteObject(rgn);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Brush.Color:=clRed;
FillRgn(Canvas.Handle,rgn,Canvas.Brush.Handle);
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if PtInRegion(rgn,X,Y) then
ShowMessage('Ok');
end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部