image中背景怎么老是白色? ( 积分: 20 )

  • 主题发起人 主题发起人 bloodymary
  • 开始时间 开始时间
B

bloodymary

Unregistered / Unconfirmed
GUEST, unregistred user!
在Groupbox中加入一个Image控件,设为Align = alClient,然后开始画图……
with image.Canvas do
begin
Pen.Color := clWhite;
Brush.Color := $00FA8170;
Polygon([Point(10, 10), Point(28,20),Point(28, 168), Point(10, 158)]);
end;
大家可以看到,Image中的背景是白色的!!!
我把Image的Transparent设为True,可是,沿着Polygon的“线”不为白色,而是消失了!!!
也就是说,在Transparent设为True的情况下,白色是没有用的!

而我在Form.canvas中画,就没有这个问题……
555555555555555,可是我必须在Image控件中画啊!
怎么做,才会使在Image控件中画图的时候,背景不为白色,而白色又可以用?
就像是在Form中画一样?
 
在Groupbox中加入一个Image控件,设为Align = alClient,然后开始画图……
with image.Canvas do
begin
Pen.Color := clWhite;
Brush.Color := $00FA8170;
Polygon([Point(10, 10), Point(28,20),Point(28, 168), Point(10, 158)]);
end;
大家可以看到,Image中的背景是白色的!!!
我把Image的Transparent设为True,可是,沿着Polygon的“线”不为白色,而是消失了!!!
也就是说,在Transparent设为True的情况下,白色是没有用的!

而我在Form.canvas中画,就没有这个问题……
555555555555555,可是我必须在Image控件中画啊!
怎么做,才会使在Image控件中画图的时候,背景不为白色,而白色又可以用?
就像是在Form中画一样?
 
Brush.Color := clFuchsia;
FillRect(ClientRect);
Pen.Color := clWhite;
Brush.Color := $00FA8170;
Polygon([Point(10, 10), Point(28,20),Point(28, 168), Point(10, 158)]);
Transparent := True;
 
lichengbin:
谢谢了,老大,这是怎么一回事?
 
能把原理告诉我吗?
 
因为默认背景色是白色,而透明色取得是Canvas.Pixels[0, Height - 1],就是左下角的颜色,是白色,那样你画白色的线当然就被当成背景透明色啦,所以我加的两句就是把背景色变一下,这样,白色就是不是背景色,当然就不会透明而不显示啦[:D]
 
接受答案了.
 
后退
顶部