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. Cookie,Session Filter,Listener详解

    HTTP请求的无状态性 HTTP的无状态性是其一个重要的特征,指的是HTTP协议本身并不保留客户端与服务器交互的历史信息,换而言之,即每次的HTTP请求都是独立的,服务器在处理每一个请求时都不会记住前 ...

  2. 痞子衡嵌入式:在IAR开发环境下将尽可能多的代码重定向到RAM中执行的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将尽可能多的代码重定向到RAM中执行的方法. 最近和同事在讨论一个客户案例,客户 APP 工程是基于 IAR 开发环境 ...

  3. elastersearch7.6.1搭建及基本操作详解

    搭建 修改系统参数 vim /etc/security/limits.conf * soft nofile 655350 * hard nofile 655350 * soft nofile 6553 ...

  4. 9.5内网横向&代理&隧道

    Socks代理思路: 工具:nps.frp.ngrok.reGeorg.sockscap64.earthworm.proxifier.proxychains 知识点 1.内外网简单知识 2.内网1和内 ...

  5. 用Python实现阿拉伯数字转换成中国汉字

    要将阿拉伯数字转换成中国汉字表示的数字,我们需要一个映射表来转换每个数字,并且处理不同位数的数字(如十.百.千.万等). 1. Python实现阿拉伯数字转换成中国汉字 下面是一个完整的Python代 ...

  6. 爬虫案例2-爬取视频的三种方式之一:selenium篇(2)

    @ 目录 前言 selenium简介 实战案例 共勉 博客 前言 继使用requests库爬取好看视频的文章后,本文分享使用python第三方库selenium库接着来爬取视频网站,后续也会接着分享使 ...

  7. TypeScript – 冷知识

    当 generic return 遇上 parameter 报错了.原因是 querySelector 默认返回类型是抽象的 Element. 而 method 参数要求的是具体的 InputElem ...

  8. JavaScript – Generator Function

    参考 阮一峰 – Generator 函数的语法 介绍 Generator Function 是一种特别的函数, 它让函数有一种分阶段执行的能力. 一般的函数, 你调用它, 它执行所有函数内的代码, ...

  9. Go runtime 调度器精讲(十一):总览全局

    原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 前面用了十讲介绍了 Go runtime 调度器,这一讲结合一些图在总览下 Go runtime 调度器. 1. 状态转换图 首先是 Gorou ...

  10. SpringBoot——基础配置

    基础配置 配置格式 SpringBoot提供了多种属性配置方法 application.properties server.port=80 application.yml server: port: ...