delphi Image32 动画演示2
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的更多相关文章
- Visaul Studio 常用快捷键的动画演示
从本篇文章开始,我将会陆续介绍提高 VS 开发效率的文章,欢迎大家补充~ 在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以 ...
- 免费的精品: Productivity Power Tools 动画演示
Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率.它的出现一定程度上弥补和完善了 Visual Studio 自身的不足, ...
- Productivity Power Tools 动画演示(转)
Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率.它的出现一定程度上弥补和完善了 Visual Studio 自身的不足, ...
- 【转载】Visaul Studio 常用快捷键的动画演示
在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以只用键盘来完成,那开发效率将得到大幅度的提升.因此,灵活地应用 Visua ...
- Productivity Power Tools 动画演示--给力的插件工具
免费的精品: Productivity Power Tools 动画演示 Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率 ...
- 【动画】JQuery实现冒泡排序算法动画演示
1 前言 冒泡排序是大家最熟悉的算法,也是最简单的排序算法,因其排序过程很象气泡逐渐向上漂浮而得名.为了更好的理解其基本的思想,毛三胖利用JQuery实现了冒泡排序的动画演示,并计划陆续实现其它排序算 ...
- jQuery each、节点操作、动画演示、尺寸操作、扩展方法
一.each 1.方式一:$.each(数组或者自定义对象,function(i,j){console.log(i,j)}) $.each(li,function(i,j){ console.log( ...
- 如何用 Keynote 制作动画演示(转)
原文:如何用 Keynote 制作动画演示 Keynote 里的很多特效可以用来制作效果不错的演示,一页页的将需要演示的内容交代清楚后,直接输出成 m4v 的视频格式,为了方便贴到博客或者发布到 Tw ...
- Visaul Studio 常用快捷键动画演示
从本篇文章开始,我将会陆续介绍提高 VS 开发效率的文章,欢迎大家补充~ 在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以 ...
- 24式太极拳:3D动画演示(图文)
http://blog.sina.com.cn/s/blog_4be33b740102e9ae.html 24式太极拳:3D动画演示(图文) (2013-03-10 18:45:55) 转载▼ 标签: ...
随机推荐
- thymeleaf学习问题整理
使用配置 <properties> <java.version>1.8</java.version> <thymeleaf.version>3.0.9. ...
- 【YashanDB数据库】大事务回滚导致其他操作无法执行,报错YAS-02016 no free undo blocks
问题现象 客户将一个100G的表的数据插入到另一个表中,使用insert into select插入数据.从第一天下午2点开始执行,到第二天上午10点,一直未执行完毕. 由于需要实施下一步操作,客户k ...
- c程序设计语言 by K&R(五)UNIX系统接口
一.文件描述符 在unix操作系统中,所有的外围设备(包括键盘和显示器)都被看作是文件系统的文件,因此,所有的输入.输出都要通过读/写文件来完成.也就是说,通过一个单一的接口就可以处理外围设备和程序之 ...
- 通过C#在Word中插入或删除分节符
在Word中,分节符是一种强大的工具,用于将文档分成不同的部分,每个部分可以有独立的页面设置,如页边距.纸张方向.页眉和页脚等.正确使用分节符可以极大地提升文档的组织性和专业性,特别是在长文档中,需要 ...
- ES6之常用开发知识点:字符串的扩展与正则表达式的扩展(三)
字符串的扩展 codePointAt JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节.对于那些需要4个字节储存的字符(Unicode 码点大于0xFFFF的字符) ...
- Nuxt Kit 的使用指南:从加载到构建
title: Nuxt Kit 的使用指南:从加载到构建 date: 2024/9/12 updated: 2024/9/12 author: cmdragon excerpt: 摘要:本文详细介绍了 ...
- 深度学习/NLP中的Attention注意力机制
首先是整体认知,Attention的位置: 传送门1:Attention 机制 传送门2:Attention用于NLP的一些小结 一句话概括:Attention就是从关注全局到关注重点. 借鉴了人类视 ...
- Angular 18+ 高级教程 – Prettier, ESLint, Stylelint
前言 不熟悉 Prettier, ESLint, Stylelint 的朋友可以先看这篇 工具 – Prettier.ESLint.Stylelint. 首先,Angular 没有 built-in ...
- DOM – Dimension & Coordinate (offset, client, computed, rect)
前言 很多年前有记入过一篇 box-sizing 和 dom width. 想想也挺可悲的, 那年我是负责后端的, 却要帮着前端去学习这些知识来解决问题... 也好, 现在 full stack, 也 ...
- 强!推荐一款Python开源自动化脚本工具:AutoKey!
1.前言 在数字化时代,自动化工具成为了提升工作效率和生产力的重要手段.Python作为一种广泛使用的编程语言,以其强大的功能和易用性受到许多开发者的青睐. 而今天给大家推荐一款开源的自动化脚本工具: ...