Image 32 自带的Demo,添加一些注解。

unit uFrmAnimation2;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls, Vcl.ExtCtrls, System.Math, Img32; type
TfrmAnimation2 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
img: TImage32;
imgCnt: Integer;
timer: TTimer;
imgIndex: Integer;
drawRec: TRect;
procedure Timer1Timer(Sender: TObject);
protected
procedure WMERASEBKGND(var message: TMessage); message WM_ERASEBKGND;
end; var
frmAnimation2: TfrmAnimation2; implementation {$R *.dfm}
{$R images.res} // 这里有图片资源 uses
Img32.Extra, Img32.Vector, Img32.Fmt.PNG; function GetMinRotationRect(const rec: TRect): TRect;
var
mp: TPointD;
radius: double;
begin // 得出图片以中心点旋转时,所有旋转画布可正常展示的矩形区域.
mp.X := rec.Width / 2;
mp.Y := rec.Height / 2;
radius := Distance(PointD(rec.Left, rec.Top), mp); // Img32.Vector 2点之间的距离
Result.Left := Ceil(mp.X - radius);
Result.Right := Ceil(mp.X + radius);
Result.Top := Ceil(mp.Y - radius);
Result.Bottom := Ceil(mp.Y + radius);
end;
// ------------------------------------------------------------------------------ function EnumResNameProc(hModule: hModule; lpszType, lpszName: PChar; lParam: LONG_PTR): BOOL; stdcall;
begin
inc(PInteger(lParam)^);
Result := true;
end; procedure TfrmAnimation2.FormCreate(Sender: TObject);
var
i: Integer;
angle, angleDelta: double;
begin
img := TImage32.Create;
// 此窗口做为独立程序时,可以这样修改窗口大小,对此综合实例,暂无用途
// img.LoadFromResource('RAZZ_00', 'PNG');
// with GetMinRotationRect(img.Bounds) do
// begin
// ClientWidth := Width;
// ClientHeight := Height;
// end; // 统计在资源中为 PNG类型资源的数量
EnumResourceNames(0, 'PNG', @EnumResNameProc, LONG_PTR(@imgCnt));
// 设置窗体透明.
self.Color := clRed;
self.TransparentColorValue := self.Color;
self.TransparentColor := true;
// make the form **background** transparent
// Self.TransparentColor := true; // :))
// and make sure BorderStyle = bsNone and BorderIcons = []
// 创建定时器,定时要求界面刷新
timer := TTimer.Create(self);
timer.OnTimer := Timer1Timer;
timer.Interval := 33;
end; procedure TfrmAnimation2.FormDestroy(Sender: TObject);
begin
img.Free;
timer.Free;
end; procedure TfrmAnimation2.FormKeyPress(Sender: TObject; var Key: Char);
begin
// if CharInSet(Key, [#13, #27, #32]) then
// Close;
end; procedure TfrmAnimation2.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
timer.Enabled := not timer.Enabled;
end; procedure TfrmAnimation2.FormPaint(Sender: TObject);
var
X, Y: Integer;
mpForm: TPointD;
begin
with ClientRect do
mpForm := PointD(Width / 2, Height / 2);
img.LoadFromResource(format('RAZZ_%2.2d', [imgIndex]), 'PNG');
X := Round(mpForm.X - img.MidPoint.X);
Y := Round(mpForm.Y - img.MidPoint.Y);
//居中中显示
Canvas.FillRect(ClientRect);
img.CopyToDc(img.Bounds, Canvas.Handle, X, Y, false);
end; procedure TfrmAnimation2.Timer1Timer(Sender: TObject);
begin
imgIndex := (imgIndex + 1) mod imgCnt; //下1张图.
Invalidate;
end; procedure TfrmAnimation2.WMERASEBKGND(var message: TMessage);
begin
message.Result := 1;
end; end.

欢迎微信搜一搜 IT软件部落 关注公众号,你可以了解更详细的内容

欢儿微信扫码关注 IT软件部落 公众号,你可以了解更详细的内容

delphi Image32 动画演示2的更多相关文章

  1. Visaul Studio 常用快捷键的动画演示

    从本篇文章开始,我将会陆续介绍提高 VS 开发效率的文章,欢迎大家补充~ 在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以 ...

  2. 免费的精品: Productivity Power Tools 动画演示

    Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率.它的出现一定程度上弥补和完善了 Visual Studio 自身的不足, ...

  3. Productivity Power Tools 动画演示(转)

    Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率.它的出现一定程度上弥补和完善了 Visual Studio 自身的不足, ...

  4. 【转载】Visaul Studio 常用快捷键的动画演示

    在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以只用键盘来完成,那开发效率将得到大幅度的提升.因此,灵活地应用 Visua ...

  5. Productivity Power Tools 动画演示--给力的插件工具

    免费的精品: Productivity Power Tools 动画演示 Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率 ...

  6. 【动画】JQuery实现冒泡排序算法动画演示

    1 前言 冒泡排序是大家最熟悉的算法,也是最简单的排序算法,因其排序过程很象气泡逐渐向上漂浮而得名.为了更好的理解其基本的思想,毛三胖利用JQuery实现了冒泡排序的动画演示,并计划陆续实现其它排序算 ...

  7. jQuery each、节点操作、动画演示、尺寸操作、扩展方法

    一.each 1.方式一:$.each(数组或者自定义对象,function(i,j){console.log(i,j)}) $.each(li,function(i,j){ console.log( ...

  8. 如何用 Keynote 制作动画演示(转)

    原文:如何用 Keynote 制作动画演示 Keynote 里的很多特效可以用来制作效果不错的演示,一页页的将需要演示的内容交代清楚后,直接输出成 m4v 的视频格式,为了方便贴到博客或者发布到 Tw ...

  9. Visaul Studio 常用快捷键动画演示

    从本篇文章开始,我将会陆续介绍提高 VS 开发效率的文章,欢迎大家补充~ 在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以 ...

  10. 24式太极拳:3D动画演示(图文)

    http://blog.sina.com.cn/s/blog_4be33b740102e9ae.html 24式太极拳:3D动画演示(图文) (2013-03-10 18:45:55) 转载▼ 标签: ...

随机推荐

  1. 基于PaddleNLP信息抽取,uie微调打造自己专属的信息抽取模型

    基于PaddleNLP信息抽取,uie微调打造自己专属的信息抽取模型 UIE模型简介 UIE优势 应用示例 UIE开箱即用 UIE适用抽取示例 命名实体识别(Named Entity Recognit ...

  2. PyTorch从入门到放弃之张量模块

    目录 张量的数据类型 torch.rand()函数 torch.randn()函数 torch.normal()函数 torch.linspace()函数 torch.manual_seed()函数 ...

  3. 【题目全解】ACGO挑战赛#8

    前言:本次挑战赛的难度相较于前面几期有所提升,主要还是因为集训的关系,出题组的成员们没有充裕的时间想原创题目(so,只能原模原样搬运某一场 ABC 的考试了.)Anyway,AK 了就行. 备注:由于 ...

  4. iptables NAT

    详解什么是NAT? IPtables中SNAT.DNAT和MASQUERADE的含义 Docker网络入门 – 默认设置

  5. 走进Docker的世界--(库存学习笔记)

    第一天 走进Docker的世界 介绍docker的前世今生,了解docker的实现原理,以Django项目为例,带大家如何编写最佳的Dockerfile构建镜像.通过本章的学习,大家会知道docker ...

  6. 原生JavaScript实现一个简单的Promise构造函数示例

    下面demo示例,只支持实例的then和catch,代码如下: function PromiseDiffer(fn){ var self = this; this.status = 'pendding ...

  7. 【笔记】Tapable源码解析图以及webpack怎样实现一个插件plugin

    Tapable源码解析图,如图所示: 一个webpack plugin由一下几个步骤组成: 一个JavaScript类函数. 在函数原型 (prototype)中定义一个注入compiler对象的ap ...

  8. 使用 Nuxt Kit 检查模块与 Nuxt 版本兼容性

    title: 使用 Nuxt Kit 检查模块与 Nuxt 版本兼容性 date: 2024/9/13 updated: 2024/9/13 author: cmdragon excerpt: 通过 ...

  9. Open Graph protocol

    大纲介绍 Open Graph protocol 是 facebook 2010 年推出的一套规范, 用途是通过一些简单的 meta tag 来描述网站的内容. 这样在 sharing 网址的时候就可 ...

  10. 【QT性能优化】QT性能优化之QT6框架高性能图形视图框架快速展示百万图元大规模场景

    QT性能优化之QT6框架高性能图形视图框架快速展示百万图元大规模场景 简介: 本文展示了使用QT图形视图框架在一个场景中绘制出百万个图元的程序的效果以及源代码:本文还介绍了QT图形视图框架的一些实用功 ...