我以前没有真正使用过图形,但我需要设计一个动画的屏幕保护程序,即。在屏幕上移动公司徽标,从侧面反弹。
到目前为止,使用 GDIPLUS,我做了以下......
Image1: IGPImage;
Image2: IGPImage;
Image1 := TGPImage.Create('background.png');
Image2 := TGPImage.Create('logo.png');
并绘制如下,OnPaint
如果 a TPaintBox
。TTimer
组件将事件提供Invalidate
给TPaintBox
.
procedure TFormMain.PaintBox1Paint(Sender: TObject);
var
GPGraphics: IGPGraphics;
i: integer;
begin
GPGraphics := TGPGraphics.Create(PaintBox1.Canvas.Handle);
//Restore the background
GPGraphics.DrawImage(Image1, 0, 0);
// Determine the next position of the logo
// We will also determine here if we are at the edges (not shown)
X := X + 1;
Y := Y + 1;
// Draw the logo somewhere on the screen
GPGraphics.DrawImage(Image2, X, Y);
end;
然而,结果并不完全令人满意,因为徽标会闪烁一点,并且屏幕上的移动(1680x1050 pixels, 32 bit colour)
需要永远到达任何一侧。我不知道如何在保持徽标在屏幕上平滑过渡的同时加快速度。
我目前在 Windows XP 上使用 Delphi XE。