请教:如何保存界面上复杂的直线折线等,有什么好的方案吗? ( 积分: 200 )

  • 主题发起人 主题发起人 xiaofusd
  • 开始时间 开始时间
X

xiaofusd

Unregistered / Unconfirmed
GUEST, unregistred user!
现在我要做的系统中有许多部件,模拟画面中有很多他们之间相互连接的直线折线等.
部件的信息我现在可以保存进数据库比方说组件的name,left,top..,可供下次调用,可是直线折线我就想不出好的方法来记忆了.

如何保存界面上复杂的直线折线信息呢,特别是折线信息,还得想办法恢复保存的组件信息.
有什么好的方案吗?大侠们帮帮忙,分我一定会送上.(在线等.....解决立即给分)
 
现在我要做的系统中有许多部件,模拟画面中有很多他们之间相互连接的直线折线等.
部件的信息我现在可以保存进数据库比方说组件的name,left,top..,可供下次调用,可是直线折线我就想不出好的方法来记忆了.

如何保存界面上复杂的直线折线信息呢,特别是折线信息,还得想办法恢复保存的组件信息.
有什么好的方案吗?大侠们帮帮忙,分我一定会送上.(在线等.....解决立即给分)
 
大家 说说建议? 没人 看到吗?
 
(x1,y1,x2,y2,x3,y3,x4,y4……)
保存所有点的坐标序列,到时再解析,
有更好的办法吗,没有,我所见到的软件都是这样做的。
 
to 魏启明:
你好能给个例子说明一下吗?我不是很明白,折线的怎么实现保存呀?谢谢
 
这方面开发经验的大侠说点建议?
 
保存每一个节点的坐标,然后在还原的时候,一个点一个点的画出来

没有做过,只能想到这样做
 
同意 魏启明 ,可以用文本(类似"%d,%d,%d,%d.......",x1,y1,x2,y1产生的格式),也可以用二进制数据块(类似int x1|int y1|int y1|int y2|......的一块连续内存)。我在做类似画板程序的时候也是这么实现的
或者你就设计一套算法,使得在确定两个对象的情况下,能自动计算出连接其间的这条折线路线。
 
var
Form1: TForm1;
x1,y1:array [0..100] of integer;
i:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
image1.Picture.LoadFromFile('d:/1.bmp');
i:=0;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
j:integer;
begin
If ssleft in shift then
begin
x1:=x;
y1:=y;
i:=i+1;
if i=1 then
begin
image1.Canvas.MoveTo(x,y);
end
else
begin
image1.Canvas.LineTo(x,y);
end;
end;
If ssright in shift then
begin
image1.Picture.LoadFromFile('d:/1.bmp');
if i=0 then
begin
image1.Canvas.MoveTo(x,y);
end
else
begin
i:=i-1;
image1.Canvas.MoveTo(x1[0],y1[0]);
for j:=0 to i-1 do
begin
image1.Canvas.LineTo(x1[j],y1[j]);
end;
end;
end;
end;

随手写的,可以实现在image上左键画线,右键撤销。
数组用来记录坐标,据说用tlist比较好
 
问题已经解决,我自己找准坐标,然后用canvas.moveto或者lineto来实现谢谢大家
 

Similar threads

回复
0
查看
893
不得闲
D
回复
0
查看
826
DelphiTeacher的专栏
D
D
回复
0
查看
771
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部