to 小雨哥
多谢指教, 其实这个项目我还没有开始.
因为我以前没有做个图形方面的东董.
我现在主要是试试 有关技术.
本来我的向通过 Timage 来实现图层, 只要设置 transparent 为true , 这样就可以实现
图层的效果, 但我发现 , 在 属性 transparent =true 的canvas 上操作速度特别慢.
而姐在 pIII 以下的机器上 特别明显. 所有这种方法不行.
我现在主要是在图形移动时遇到了 这个解决不了的问题.
主要有以下几种方法(我所知道的):
用多个 image
在 属性 transparent =true 的canvas 上操作速度特别慢.
而姐在 pIII 以下的机器上 特别明显.
用一个 Timage
1. clear()
move()
draw()
这种方法 主要是 会破坏其他图形.
所以我改进
2.
设置 image.canvas.pen.mode=pmxor;
draw()
move()
draw()
但这种方法对文字不行
3.
clear
move
draw
(drawall 在把其他图形全部重画)
这种方法在 图形对象少时有用,但图形多时, 特慢 你想想 mousemove() 事件 就知道了.
以下是我的系统的初步想法,(也是我在试试的程序) 写的简单,多了, 你可能没有兴趣看.
Ticon 是所有类的祖先
.....................
position:Tpoint
parent:TmultiIcon
constructor create(Acanvas:Tcanvas;Aparent:TmultiIcon;Apoint:Tpoint);
procedure draw;overload; // 绘制
procedure draw(Acanvas:Tcanvas);overload;virtual;abstract
procedure clear; //擦除
procedure move(Awidth,Aheight:integer); abstract //移动
function isselect(Apoint:Tpoint):boolean;virtual abstract; //是否选中
procedure select(Aselected:boolean);virtual; //选中
Ticons=class //管理多个Ticon 的对象,
flist:Tlist;
...............
还有其他一些辅助的其他类.
下面的 这些之类 主要是 管理 多个 ico 组成的对象 ..
TmultiIcon =clas (Ticon) //多个 Icon 组成的图形
ficons :Ticons
........................
Telectricon=class(TmultiIcon)
.........................
// 下面有N 多个Telectricon 的子类 只要实现 Draw(Acanvas) 方法 ,和savestream 二个方法.
Tswitch= class(Telectricon)
...........................
请各位帮我想向有什么好办法?