我使用3个半透明tImage3D创建FireMonkey应用程序。 这是代码和屏幕。一切似乎都很好。Firemonkey半透明Image3D有时是不透明的
procedure TForm1.Form3DCreate(Sender: TObject);
// create a new semi-transparent timage3d
// object with color and Z position.
procedure NewImage (const nColor : tColor;
const nZ : integer);
begin
// create the image
with tImage3D . Create (self) do
begin
// put it on the screen
Parent := self;
// set the size
Width := 10;
Height := 10;
// set the image to a single pixel.
Bitmap . Width := 1;
Bitmap . Height := 1;
// set the Alpha to $80 to make it
// semi-transparent
Bitmap . Pixels [ 0, 0 ] := $80000000 + nColor;
// set the z position
Position . Z := nZ;
end;
end;
begin
NewImage (claRed, +10);
NewImage (claGreen, 0);
NewImage (claBlue, -10);
end;
现在颠倒顺序。现在它们是不透明的。
begin
NewImage (claRed, -10);
NewImage (claGreen, 0);
NewImage (claBlue, +10);
end;
我缺少什么?
显然,一个对象对前面创建的对象只是半透明的。如果那有意义的话。红色框呈现为粉红色,因为尽管可以看到白色背景,但您无法通过它看到绿色或蓝色框。通过绿色框,你可以看到白色背景和红色框,但不是蓝色框。我也有同样的事情与text3d对象发生。 – 2011-12-14 00:22:12