多图层操作问题:我在form上放置了2个----image1、image2。。。好奇怪!(100分)

  • 主题发起人 主题发起人 zxygraphics
  • 开始时间 开始时间
Z

zxygraphics

Unregistered / Unconfirmed
GUEST, unregistred user!
image2 在image1的上面,image2 的transpare为真(透明),

先对image1进行canvas操作,然后对上面的image2进行操作

结果image2变为不透明,将image1遮住了,有时却不会遮住。

请教这是为什么呀?
 
image1 image2在form上的align均为alclient/

设image2的align为alnone时,则透明(transpareent)始终有效,为什么呀???
 
把代码放出来看看啊
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin

image1.Visible:=true;
image3.Picture.Assign(nil);
image1.Canvas.TextOut(10,10,'test');

image1.Width:=panel1.Width;
image1.Height:=panel1.Height;

image1.Canvas.Brush.Color:=$0071B8FF;
image1.Canvas.Pen.Color:=clblue;
image1.Canvas.Rectangle(20,80,200,600);


end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

image2.BringToFront;
image1.Visible:=true;
image2.Visible:=true;
image1.Visible:=true;

image2.Canvas.Brush.Color:=clred;
image2.Canvas.Pen.Style:=psclear
image2.Canvas.Pen.Color:=clblue;
image2.Canvas.Rectangle(10,20,100,20);

end;
 
其实这是个很笨的办法,主要是资源占用很大,而且控制也不好,如果你想改变大小就很岔了,
 
多图层操作这么简单能实现?呵呵~~~
 
Ehomsoft
pailier:

有什么高见呀?拜托...
 
多人接受答案了。
 
一个办法就是定义一个结构,我在这里讲原理,你可以找第三方layer空间
type layer of recode
layerid :integer;//表示一个层的表示号码
layername:string//表示一个层名称
itemsystem:integer;//表示的类型,文字曾,还是图象层
arrryid:integer;//数组指针主要对数组进行定位
array item[..]:tbitmap;//数据项目
arry string[..] :string//如果是文字层,数据在这里
end;
着个结构有什么用呢?
主要是用来在内存中保存你数据,
你所有做的是当你的鼠标接触到一个GDI截面的对象时,程序检测对象的LAYERID来判断是否
你可以对他进行操作!!!!如,选取,放大等。。
itemsystem:可以让你的程序知道该如何处理,是针对文字处理,还是图象,如果是文字就通过输出文字
好了我的时间不多了,
我的MSN:pailier@hotmail.com
qq:248396948
认证信息 delphi
 
最好把他做成个组件,以前我作过,功能很简单
 

Similar threads

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