官方快速入门,加上了一些注解 [从WORD粘贴后失去了样式]

TImage32 类是关键。

TImage32 对象包含单个图像,所有图像操作都作用于此对象。

uses Img32;  //引用单元

...

img := TImage32.Create;  //创建TImage32对象

//执行一些其它操作

img.Free;  //用完了要释放

图像存储、格式和文件访问。

Image32 分别通过 Img32.Fmt.BMP、Img32.Fmt.PNG 和 Img32.Fmt.JPG 模块提供对 BMP、PNG 和 JPG 存储的文件访问。

uses Img32, Img32.Fmt.PNG;  //要加载什么类型的图片,必需添加什么类型的单元引用

...

img := TImage32.Create;

img.LoadFromFile('beetle.png');   //自动会判断加载不同类型的图片

//执行一些其它操作

img.SaveToFile('beetle_modified.png');  //保存

img.Free;

图像处理

Image32 库具有大量处理图像的类和函数列表,包括:色调、亮度和饱和度调整;方框模糊和高斯模糊;擦除颜色;混合合并图像;作物;浮雕;翻转和旋转;缩放;提高;扭曲;转换;和特效

uses Img32, Img32.Fmt.PNG;

...

var

img: TImage32;

begin

img := TImage32.Create;

img.LoadFromFile('fruit.png');

img.Rotate(-angle45);   //旋转

img.SaveToFile('fruit45.png');

img.Free;

效果如下:

uses Img32, Img32.Extra, Img32.Fmt.PNG;

...

img := TImage32.Create;

img.LoadFromFile('fruit.png');

img.SaveToFile('c:\temp\fruit_before.png');

Sharpen(img, 3, 10);   //锐化,图片显示更清晰

img.SaveToFile('c:\temp\fruit_after.png');

img.Free;

uses Img32, Img32.Vector, Img32.Fmt.PNG, Img32.Transform;

...

var

img: TImage32;

src, dst: TPathD;

begin

img := TImage32.Create;

img.LoadFromFile('clouds.png');

src := Rectangle(img.Bounds); //将TRect转换为路径

dst := CopyPath(src);  //复制路径

dst[1].Y := img.Height div 8;   //修改路径点1的Y轴位置

dst[2].Y := img.Height * 7 div 8; //修改路径点2的Y轴位置

if ProjectiveTransform(img, src, dst, NullRect) then //投影变换

img.SaveToFile('c:\temp\clouds_proj.png');

img.Free;

end;

多边形渲染

Img32 提供了大量的绘图工具。
Img32.Draw 模块提供线条、虚线多边形绘图功能,并包括几个渲染器,可生成:纯色;平铺图像;以及线性和径向渐变渲染。
Img32.Vector 模块还提供了许多矢量绘图功能,包括:矩形;圆形矩形;椭圆;馅饼和弧线;样条和贝塞尔;星;等。

uses Img32, Img32.Fmt.PNG,Img32.vector, Img32.Draw, Img32.Clipper2;

...

var

img: TImage32;

rec: TRect;

path: TPathD;

paths: TPathsD;

radGradRend: TRadialGradientRenderer;

begin

img := TImage32.Create;

img.SetSize(256,256);

rec := img.Bounds; //图形区域

rec := Img32.Vector.InflateRect(rec, -50,-50);

//区域对象缩小[也可以用系统自带函数]

//绘制一个渐变填充的星形

path := Star(PointD(128, 128), 50, 100, 7); //获取一个星形的路径

radGradRend := TRadialGradientRenderer.Create; //创建渐变渲染对象

radGradRend.SetParameters(rec, clFuchsia32, clYellow32);//设置渲染参数

DrawPolygon(img, path, frNonZero, radGradRend);//绘制多边形到 img中

radGradRend.Free;  //释放渐变渲染对象

DrawLine(img, path, 1, clBlack32, esPolygon); //根据路径绘制线[即星形外边框]

//画一个星星的虚线轮廓

paths := InflatePath(path, 7, jsRound);  //路径扩展(放大)

DrawDashedLine(img, paths,[4,4], nil, 1, clBlack32, esPolygon);

// 绘制虚线路径线段

img.SaveToFile('c:\temp\star.png');

img.Free;

end;

文本特效

uses Img32, Img32.Fmt.PNG, Img32.Text,Img32.Vector, Img32.Draw, Img32.Extra;

...

var

img: TImage32;

textOutline: TPathsD;

impactFont: TFontReader;

impact48: TFontCache;

begin

img := TImage32.Create(400,150);

//Load Windows' Impact TTF font  加载字体

FontManager.Load('Impact', 800);

impactFont := FontManager.GetFont('Impact'); //获取字体渲染对象

impact48 := TFontCache.Create(impactFont, DpiAware(48));

//创建指定大小的字体缓存对象

try

textOutline := impact48.GetTextGlyphs(20, 130, 'Image32');

//获取文本 Image32 的路径

//绘制文本使用阴影和3D效果绘制轮廓

DrawShadow(img, textOutline, frNonZero, 3);//绘制阴影

DrawPolygon(img, textOutline, frNonZero, $FF00DD00);//绘制多边形

Draw3D(img, textOutline, frNonZero, 3,4);//绘制3D效果

DrawLine(img, textOutline, 1, clBlack32, esPolygon);//绘制边框线

img.SaveToFile('c:\temp\Image32.png');

finally

img.Free;

impact48.Free;

//impactFont.Free; //managed by FontManager

end;

end;

什么!没有 VCL.Graphics

这是一个深思熟虑的设计决策,因此将 Img32 库翻译成另一种语言和不同的操作系统相对容易。但话虽如此,VCL.Graphics 仍然用于 Img32.Fmt.PNG 和 Img32.Fmt.JPG 模块。
那么如何以 Delphi 形式显示图像呢?

Windows中的所有绘图都是使用设备上下文(DC)执行的,Delphi的VCL.Graphics将DC封装在TCanvas对象中,实际的DC是TCanvas.Handle。因此,使用 TImage32 的 CopyToDC 方法,其图像可以在任何具有 TCanvas 属性的 TControl 中显示;其中包括 TForm、TPanel 和 TImage 组件。

uses Img32;

...

img := TImage32.Create;

//做一些其它操作… …

// Image1是Delphi中自带的控件 TImage

Image1.Picture.Bitmap.SetSize(img.Width, img.Height);

Image1.Picture.Bitmap.Canvas.Brush.Color := clBtnFace;

Image1.Picture.Bitmap.Canvas.FillRect(Image1.ClientRect);

//将Image32中的图形复制到 对象的句柄,即可在对象的句柄对象显示图形

img.CopyToDc(Image1.Picture.Bitmap.Canvas.Handle);

img.Free;

否则,请使用包含 TImage32Panel 组件的随附的 Img32.Panels 单元。

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

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

delphi Image32 之 快速入门的更多相关文章

  1. [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门

    [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门 1. 什么是正则表达式? 1.1 正则表达式概念 正则表达式,又称正则表示法,英文名:Regular Expression(简 ...

  2. 《Delphi XE6 android 编程入门教程》推荐

    近5.6年已经没有看见关于delphi的新技术的书出来了(看来在国内delphi的使用量确实很低了), 高勇同学最近出了一本<Delphi XE6 android 编程入门教程>,上周刚拿 ...

  3. Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo

    Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如:   Memo1.UseSma ...

  4. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  5. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  6. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  7. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  8. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  10. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

随机推荐

  1. 搜索引擎用法 cheatsheet

    逻辑 写法 与 keyword1 keyword2 或 keyword1 OR keyword2 限定关键词的排列 "keyword" 限定搜索的网站 site:cnblogs.c ...

  2. 【Homebrew】之相关命令问题合集及iOS真机调试包

    一.Homebrew更换国内镜像源(中科大.阿里.清华) Homebrew主要有四个部分组成: brew.homebrew-core .homebrew-bottles.homebrew-cask. ...

  3. HBuilder X在4K显示器怎么设置HBuilderX窗口本身的字体大小

    在使用HBuilder X编辑器的时候,使用笔记本自身的显示器,编辑器窗口本身的字体大小都正好,但是将HBuilder X编辑器用在外接显示器(高清)或者4K显示器上的时候,就不行了.怎么解决呢? 在 ...

  4. FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架

    ​很多程序员想学习音视频的编程开发,却不知从何学习,因为音视频技术的体系庞大.知识杂糅,一眼望去就令人生怯.那么学习音视频建议站在前人的肩膀上,从优秀的音视频开源框架开始钻研,先熟悉这些开源工具的具体 ...

  5. sql语句去掉前面的0(前导零,零前缀)

    sql还有个stuff的函数,很强悍. 一个列的格式是单引号后面跟着4位的数字,比如'0003,'0120,'4333,我要转换成3,120,4333这样的格式,就是去掉单引号和前导的0,用以下语句就 ...

  6. AI 视觉的应用|ZegoAvatar ⾯部表情随动技术解析

    ​ 一.AI"卷"进实时互动 2021年,元宇宙概念席卷全球,国内各大厂加速赛道布局,通过元宇宙为不同的应用场景的相关内容生态进行赋能.针对"身份"." ...

  7. dotnet 学习 CPF 框架笔记 了解 X11 里如何获取触摸信息

    本文记录我学习 CPF 框架的笔记,本文记录我阅读 CPF 框架,学习到了如何在 dotnet C# 里面获取到 X11 的触摸信息,获取到多指触摸以及触摸点的面积和触摸点压感等信息的方法 开始之前, ...

  8. JavaScript – 理解 Function, Object, Prototype, This, Class, Mixins

    前言 JavaScript (简称 JS) 有几个概念 Object, Prototype, This, Function, Class 是比较难理解的 (相对其它语言 C# / Java 而已),这 ...

  9. CSS – 冷知识 (新手)

    <img> extra 4px at the bottom 参考: Extra 4px at the bottom of html <img> The mysterious 4 ...

  10. Unity中的三种渲染路径

    Unity中的渲染路径 Unity的渲染路径 在Unity里,渲染路径(Rendering Path)决定了光照是如何应用到Unity Shader中的.因此,我们只有为Shader正确地选择和设置了 ...