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. 零基础学习人工智能—Python—Pytorch学习(九)

    前言 本文主要介绍卷积神经网络的使用的下半部分. 另外,上篇文章增加了一点代码注释,主要是解释(w-f+2p)/s+1这个公式的使用. 所以,要是这篇文章的代码看不太懂,可以翻一下上篇文章. 代码实现 ...

  2. redux开发中的一个小坑

    redux的actiontypes,不可以重名,重名将会报错 When called with an action of type "inserttoken", the slice ...

  3. office系列软件(word、ppt、excel)打不开的解决方案

    前言 ​ 这里我遇到的情况是点击都没反应,而不像很多人那样有报错弹窗,费劲千辛万苦才最终解决,中间一度自暴自弃想着干脆用WPS得了(大可不必),中间我尝试了三种方法,不一定哪种有效,权当分享: 一.使 ...

  4. vue 根据div id 滚动到指定view到可视视图中

    <div id="name" @click="scrollToViewById('name')"> ...... </div> scro ...

  5. Vue3比Vue2快的体现-第二部分

    这部分主要说两个方面,1是静态提升,2是事件监听缓存 静态提升意思就是说,在以往Vue执行函数的时候,无论是绑定数据的节点还是没有绑定的,都会在render函数执行的时候重新渲染,如下代码所示 imp ...

  6. mysql 批量有则修改,无则新增

    需要为表添加唯一索引 alter table tb_*** add unique index(aa,bb); -- 此条为联合唯一索引INSERT INTO<include refid=&quo ...

  7. vscode废掉了,跳转不到函数定义,无法自动补全,重装也没用的解决办法

    1. 先卸载掉所有已安装的插件 2. 卸载vscode 3. 删除个人配置和插件配置,涉及两个文件夹 4. 需要安装C/C++组件,下载对应的vsix文件 下载地址: https://github.c ...

  8. .NET 8 + Vue/UniApp 高性能前后端分离框架

    前言 作为一名开发者,我们知道能够简化开发流程.提升工作效率的工具是至关重要的. 推荐一款前后端分离框架 Admin.NET(ZRAdmin),它不仅可以满足项目开发的需求,还应用了一些新的特性,如R ...

  9. 30. 串联所有单词的子串 Golang实现

    题目描述: 给定一个字符串 s 和一个字符串数组 words. words 中所有字符串 长度相同 . s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串. 例如, ...

  10. c++线程--快速上手

    线程创建 头文件#include thread 是在 C++11 标准中引入的. C++11 标准引入了对多线程编程的标准化支持,其中包括了线程的创建.管理和同步机制. 头文件提供了基本的线程支持库, ...