推荐资料:“由基本图元组成元件,在由元件组成元件组,元件组再组成元件库,绘图时引用元件绘图”怎么用DELPHI实现,请给荐一些资料或说说看。(200分)

  • 主题发起人 主题发起人 coolmy
  • 开始时间 开始时间
C

coolmy

Unregistered / Unconfirmed
GUEST, unregistred user!
推荐资料:“由基本图元组成元件,在由元件组成元件组,元件组再组成元件库,绘图时引用元件绘图”怎么用DELPHI实现,请给荐一些资料或说说看。
如题先行谢过,再加100分,请帮忙提前。我的E_mail:Bookinternet@163.com
 
我用一电力绘图软件:以下这是其中一段,我想它就是“变压器”的图元吧,可怎么在PaintBox中调用呢。下面这段又是如何显示为一个“变压器”呢。与StringGrid 或DrawGrid 有何关系(我看程序中用到此控件)
[SYMBOL]
变压器
NODES:
2
-21
-1
20
-1
0
0
LINES:
-1
ARCS:
-1
CIRCLES:
1
0
0
FALSE
-10
-1
11
0
0
FALSE
9
-1
11
POLYGONS:
-1
[SYMBOL]
集装箱(照明)
//等等
 
大概思路是需要你自己生成一个对象(比如继承自TCustomControl),解析信息,并将图形化到自己的Canvas上边,这就是一个元件组了.而里边具体的Node Line CIRCLES 就是基本的图元了。具体的概念不是很好说清楚,参考DevExpress里边的FlowControl(? 51delphi有下载好像是这个名字吧).简单的架构如下
TCustomShape = Class(TCustomControl)
private
procedure OnParaChange;
protected
procedure paint;
Function OnSelTest(Pos: TPoint): Integer;
//在进行选择时对每个附近的元件都需要进行判断,比较取出并选定最合适应该选择的元件
published
property Para: TStrings read GetPara write SetPara;
end;

procedure TCustomShape.OnParaChange
begin
ReParseSymbol; //解析基本元件 点,线,圆
ReCalcSize; //计算和设置Self的大小和Border
Inherited; //重画
end;

procedure Paint;
var
aInt: Integert;
begin
for aint:=0 to Length(SymArr)-1 do
begin
case SymArr[aInt].Type of
SymNode: DrawBigNode( SymArr[aInt]);
SymLine: Drawline(SymArr[aInt]);
..
end;
end;
 
自己做个控件,读取上面这些内容然后解释并控件画笔在控件的画布上自己画。保存时相反
 
请给推荐一些入门的书或资料看看。先行谢过。
 
“我用一电力绘图软件”如果你是要使用这个软件,就不要考虑这么多了,仔细研究他的接口就行了,如果有不能实现的功能 ,是该软件的问题。
如果你是要开发一个这样的软件,你现在的需求不免太简单了吧,但是用CAD的概念似乎可以搞定的(GIS也行)
 
可以看看Dream控件中的FormDesigner

保存按照流格式保存

Email me:wyddr@whnew.com

给你看看我做的东东,你只需要写自己的图元控件
 
to: wyddr 我的信箱:bookinternet@163.com 多谢指教。
 
我想要电力软件绘图的源码zhaoyi@butone.com
 
我上传了

http://www.playicq.com/shop/dispsource.php?id=72
 
我想要电力系统绘图的源码,进行分析
 
电力绘图软件的原码能否拿来共同进步
 
分分!感谢参与。
 
后退
顶部