图像 – 扑克牌翻转动画
发布时间:2020-12-15 09:49:56 所属栏目:大数据 来源:网络整理
导读:您知道任何可以实现3D翻转效果的免费组件/库吗? 在这里演示:snorkl.tv 解决方法 像这样的东西可能会产生类似的效果(只是另一种尝试,以显示如何做到这一点,也不是那么精确,但它只是为了好玩,因为你已经要求一个库或组件).该原理基于一个rectnagle,它正在调
您知道任何可以实现3D翻转效果的免费组件/库吗?
在这里演示:snorkl.tv 解决方法
像这样的东西可能会产生类似的效果(只是另一种尝试,以显示如何做到这一点,也不是那么精确,但它只是为了好玩,因为你已经要求一个库或组件).该原理基于一个rectnagle,它正在调整大小并居中在绘图框中,其中使用StretchDraw函数渲染卡片:
Unit1.pas unit Unit1; interface uses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ExtCtrls,PNGImage; type TCardSide = (csBack,csFront); TForm1 = class(TForm) Timer1: TTimer; Timer2: TTimer; PaintBox1: TPaintBox; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure PaintBox1Click(Sender: TObject); procedure PaintBox1Paint(Sender: TObject); private FCardRect: TRect; FCardSide: TCardSide; FCardBack: TPNGImage; FCardFront: TPNGImage; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin FCardSide := csBack; FCardRect := PaintBox1.ClientRect; FCardBack := TPNGImage.Create; FCardBack.LoadFromFile('tps2N.png'); FCardFront := TPNGImage.Create; FCardFront.LoadFromFile('Ey3cv.png'); end; procedure TForm1.FormDestroy(Sender: TObject); begin FCardBack.Free; FCardFront.Free; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if FCardRect.Right - FCardRect.Left > 0 then begin FCardRect.Left := FCardRect.Left + 3; FCardRect.Right := FCardRect.Right - 3; PaintBox1.Invalidate; end else begin Timer1.Enabled := False; case FCardSide of csBack: FCardSide := csFront; csFront: FCardSide := csBack; end; Timer2.Enabled := True; end; end; procedure TForm1.Timer2Timer(Sender: TObject); begin if FCardRect.Right - FCardRect.Left < PaintBox1.ClientWidth then begin FCardRect.Left := FCardRect.Left - 3; FCardRect.Right := FCardRect.Right + 3; PaintBox1.Invalidate; end else Timer2.Enabled := False; end; procedure TForm1.PaintBox1Click(Sender: TObject); begin Timer1.Enabled := False; Timer2.Enabled := False; FCardRect := PaintBox1.ClientRect; Timer1.Enabled := True; PaintBox1.Invalidate; end; procedure TForm1.PaintBox1Paint(Sender: TObject); begin case FCardSide of csBack: PaintBox1.Canvas.StretchDraw(FCardRect,FCardBack); csFront: PaintBox1.Canvas.StretchDraw(FCardRect,FCardFront); end; end; end. Unit1.dfm object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 203 ClientWidth = 173 Color = clBtnFace DoubleBuffered = True Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False Position = poScreenCenter OnCreate = FormCreate OnDestroy = FormDestroy PixelsPerInch = 96 TextHeight = 13 object PaintBox1: TPaintBox Left = 48 Top = 40 Width = 77 Height = 121 OnClick = PaintBox1Click OnPaint = PaintBox1Paint end object Timer1: TTimer Enabled = False Interval = 10 OnTimer = Timer1Timer Left = 32 Top = 88 end object Timer2: TTimer Enabled = False Interval = 10 OnTimer = Timer2Timer Left = 88 Top = 88 end end 牌 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |