请教各位高手
如何进行层次性作图?用layer行不行?
比如一个模块用矩形来表示 但是这个模块还包含许多子模块 也用矩形来表示
但是不能把这个模块跟他的子模块在同一个界面上显示出来。 所以就有个父模块跟子模块之间就有个层次性
想把不同层次的模块在不同的layer上显示 或者说大家有没有一个更好的方法来实现这个作图功能?谢谢各位
如何进行层次性作图?用layer行不行?
比如一个模块用矩形来表示 但是这个模块还包含许多子模块 也用矩形来表示
但是不能把这个模块跟他的子模块在同一个界面上显示出来。 所以就有个父模块跟子模块之间就有个层次性
想把不同层次的模块在不同的layer上显示 或者说大家有没有一个更好的方法来实现这个作图功能?谢谢各位
解决方案 »
- serverSocket 接收消息
- EXEC master..xp_cmdshell ... 不正常的定义参数对象
- 如何作到不需要安装环境,就可运行可执行文件(ADO相关)
- Delphi有沒有將數字轉換成英文的函數?
- 救命啊,存储过程里面的错误,要怎么修改,在线等
- 如何实现按回车后如同按tab键效果,
- 99分提问: 如何将flash动画做成制资源文件,如何在程序中调用资源文件中的flash,注在调用是不能生成临时文件.
- 错在哪里
- 一个字符字段长度是200,在打印时,一行打不完,怎样才能让其在下一行自动打印?
- !!!500分相贈,怎樣實現語法高亮!不會也幫忙UP一下.
- 求两个日期之间的年数.....
- 请问:使用fastreport 2.5开发报表,如何让用户在预览报表时,对报表的设计进行修改,但修改后的结果并不保存?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin;type
TShape=(vLine,vRectangle,vRoundRect,vRound,vEllipse); TForm1 = class(TForm)
ToolBar1: TToolBar;
T_line: TToolButton;
T_ellipse: TToolButton;
T_rectangle: TToolButton;
T_roundrect: TToolButton;
T_circle: TToolButton;
T_text: TToolButton;
StatusBar1: TStatusBar;
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure T_lineClick(Sender: TObject);
procedure T_rectangleClick(Sender: TObject);
procedure T_roundrectClick(Sender: TObject);
procedure T_circleClick(Sender: TObject);
procedure T_ellipseClick(Sender: TObject);
procedure T_textClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
Start_cur:TPoint; //画图起点
Pre_cur:TPoint; //上一个点
Can_Draw:Boolean; //画图开关
Shape:TShape; //画图形状implementation{$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Can_Draw:=True; //打开画图开关
Start_cur.X:=X; //记录起始点
Start_cur.Y:=Y;
Pre_cur.X:=X;
Pre_cur.Y:=Y;
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Can_Draw:=False;
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Radius:Integer;
begin
if Can_Draw then
begin
Canvas.Pen.Mode:=pmNotXor; //pmXor的互补色
case Shape of
vLine: begin
Canvas.MoveTo(Start_cur.X,Start_cur.Y);
Canvas.LineTo(Pre_cur.X,Pre_cur.Y);
end;
vRectangle:
Canvas.Rectangle(Start_cur.X,Start_cur.Y,Pre_cur.X,Pre_cur.Y);
vRoundRect:
Canvas.RoundRect(Start_cur.X,Start_cur.Y,Pre_cur.X,Pre_cur.Y,15,15);
vRound: begin
Radius:=Round(Sqrt(Sqr(abs(Pre_cur.X-Start_cur.X))+
Sqr(abs(Pre_cur.Y-Start_cur.Y))));
Canvas.Ellipse(Start_cur.X-Radius,Start_cur.Y-Radius,
Start_cur.X+Radius,Start_cur.Y+Radius);
end;
vEllipse:
Canvas.Ellipse(Start_cur.X,Start_cur.Y,Pre_cur.X,Pre_cur.Y);
end;
Canvas.Pen.Mode:=pmCopy; //画新的图形
case Shape of
vLine: begin //直线
Canvas.MoveTo(Start_cur.X,Start_cur.Y);
Canvas.LineTo(X,Y);
StatusBar1.SimpleText:='直线';
end;
vRectangle: begin //矩形
Canvas.Rectangle(Start_cur.X,Start_cur.Y,X,Y);
StatusBar1.SimpleText:='矩形';
end;
vRoundRect: begin //圆角矩形
Canvas.RoundRect(Start_cur.X,Start_cur.Y,X,Y,10,10);
StatusBar1.SimpleText:='圆角矩形';
end;
vRound: begin //圆
Radius:=Round(Sqrt(Sqr(abs(X-Start_cur.X))+
Sqr(abs(Y-Start_cur.Y))));
Canvas.Ellipse(Start_cur.X-Radius,Start_cur.Y-Radius,
Start_cur.X+Radius,Start_cur.Y+Radius);
StatusBar1.SimpleText:='圆形';
end;
vEllipse: begin //椭圆
Canvas.Ellipse(Start_cur.X,Start_cur.Y,X,Y);
StatusBar1.SimpleText:='椭圆';
end;
end;
Pre_cur.X:=X;
Pre_cur.Y:=Y;
end;
end;//单击【直线】按钮的响应事件代码。
procedure TForm1.T_lineClick(Sender: TObject);
begin
Shape:=vLine;
end;//单击【矩形】按钮的响应事件代码。
procedure TForm1.T_rectangleClick(Sender: TObject);
begin
Shape:=vRectangle;
end;//单击【圆角矩形】按钮的响应事件代码。
procedure TForm1.T_roundrectClick(Sender: TObject);
begin
Shape:=vRoundRect;
end;//单击【圆】按钮的响应事件代码。
procedure TForm1.T_circleClick(Sender: TObject);
begin
Shape:=vRound;
end;//单击【椭圆】按钮的响应事件代码。
procedure TForm1.T_ellipseClick(Sender: TObject);
begin
Shape:=vEllipse;
end;//单击【文字】按钮的响应事件代码。
procedure TForm1.T_textClick(Sender: TObject);
begin
Canvas.TextOut(Start_cur.X,Start_cur.Y,InputBox('请输入字符串','字符串',''));
//输出文字
StatusBar1.SimpleText:='文字';
end;end.
看看这个对你是否有用