Delphi XE2 之 FireMonkey 入门(15) - 滤镜: 获取滤镜信息
滤镜类的继承关系:
TObject -> TPersistent -> TFilter -> TShaderFilter -> { 具体的滤镜类 }
//下面例子首先会用到 FMX.Filter 单元的四个公用方法:
procedure FillCategory(AList: TStrings);
procedure FillFiltersInCategory(const Category: string; AList: TStrings);
function FilterByName(const AName: string): TFilter;
function FilterClassByName(const AName: string): TFilterClass;
通过 FillCategory()方法可以获取滤镜的分类列表:
FillCategory(ListBox1.Items);
通过 FillFiltersInCategory()方法可以获取某个类别的滤镜列表:
FillFiltersInCategory('分类名称', ListBox2.Items);
通过 FilterByName()方法可以获取滤镜对象:
var
filter: TFilter;
begin
filter := FilterByName('滤镜名称'); //这很方便, 省得手动建立了
end;
通过 TFilter 的 FilterAttr()方法可以获取滤镜的信息:
var
filter: TFilter;
filterRec: TFilterRec; //滤镜信息被包装在 TFilterRec 类型的结构体中
begin
filter := FilterByName('滤镜名称');
filterRec := filter.FilterAttr;
{因为 FilterAttr 是 class 方法, 所以也可以如下获取}
filterRec := FilterClassByName('滤镜名称').FilterAttr;
end;
TFilterRec 结构:
TFilterRec = record
Name: string; //滤镜名称
Desc: string; //滤镜描述
Values: TShaderValueRecArray; //滤镜的参数数组, TShaderValueRec 类型
end;
TShaderValueRec 结构:
TShaderValueRec = record
Name: string; //参数名称
Desc: string; //参数描述
ValueType: TShaderValueType; //参数类型: vtFloat, vtPoint, vtColor, vtBitmap(数值、点、颜色值、图像)
Value: Variant; //参数值
Min, Max, Default: Variant; //参数的最小、最大及默认值
end;
测试: 需要两个 TListBox、一个 TMemo, 还有 OnCreate 事件和 TListBox 的 OnClick 事件.
uses System.TypInfo; //用于获取枚举名称 procedure TForm1.FormCreate(Sender: TObject);
begin
FillCategory(ListBox1.Items); //获取分类名称列表
end; procedure TForm1.ListBox1Click(Sender: TObject);
var
strItem1: string;
begin
strItem1 := ListBox1.Items[ListBox1.ItemIndex];
FillFiltersInCategory(strItem1, ListBox2.Items); //获取指定类别的滤镜列表 ListBox2.ItemIndex := ;
ListBox2.OnClick(nil);
end; procedure TForm1.ListBox2Click(Sender: TObject);
var
strItem2: string;
filter: TFilter;
filterRec: TFilterRec;
shaderValueRec: TShaderValueRec;
begin
strItem2 := ListBox2.Items[ListBox2.ItemIndex];
filter := FilterByName(strItem2); //通过滤镜名称获取滤镜对象
filterRec := filter.FilterAttr; //获取滤镜对象的信息
// filterRec := FilterClassByName(strItem).FilterAttr; //同上一行 Memo1.Text := '滤镜类名: ' + filter.ToString; //ClassName
Memo1.Lines.Add('滤镜名称: ' + filterRec.Name);
Memo1.Lines.Add('滤镜描述: ' + filterRec.Desc);
Memo1.Lines.Add('------------------------------------------------'); for shaderValueRec in filterRec.Values do
begin
Memo1.Lines.Add('参数名称: ' + shaderValueRec.Name);
Memo1.Lines.Add('参数描述: ' + shaderValueRec.Desc);
Memo1.Lines.Add('参数类型: ' + GetEnumName(TypeInfo(TShaderValueType), Integer(shaderValueRec.ValueType)));
if shaderValueRec.ValueType <> TShaderValueType.vtBitmap then
begin
Memo1.Lines.Add('当前值: ' + string(shaderValueRec.Value));
Memo1.Lines.Add('最小值: ' + string(shaderValueRec.Min));
Memo1.Lines.Add('默认值: ' + string(shaderValueRec.Default));
Memo1.Lines.Add('最大值: ' + string(shaderValueRec.Max));
end;
Memo1.Lines.Add(EmptyStr);
end;
end;
Delphi XE2 之 FireMonkey 入门(15) - 滤镜: 获取滤镜信息的更多相关文章
- Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem
Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView.TTreeViewItem TScrollBox -> TCustomTreeView -> ...
- Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGrid
Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid.TGrid TStringGrid.TGrid 都是从 TCustomGrid 继承; 区别有:1 ...
- Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox
Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox TScrollBox -> TCustomListBox -> TListBox; 其元素项 ...
- Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo
Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如: Memo1.UseSma ...
- Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览
Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览 { TControl } public constructor Create(...); ov ...
- Delphi XE2 之 FireMonkey 入门(36) - 控件基础: TForm
Delphi XE2 之 FireMonkey 入门(36) - 控件基础: TForm 当我第一次读取 Form1.StyleLookup 并期待出现 "formstyle" 时 ...
- Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题
Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题 很喜欢 FMX 的一些新控件, 如: TExpander.TArcDial.TComboTrackBar.T ...
- Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox、TComboEdit
Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox.TComboEdit TListBox 有两个兄弟 TComboListBox.TComboEditL ...
- Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox、TVertScrollBox、TFramedScrollBox、TFramedVertScrollBox
Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox.TVertScrollBox.TFramedScrollBox.TFramedVertScrollB ...
随机推荐
- N皇后问题(递归)
//八皇后递归解法 //#include<iostream> //using namespace std; #include<stdio.h> ] = {-,-,-,-,-,- ...
- Quartz.NET | 佳佳的博客
原文:Quartz.NET | 佳佳的博客 Quartz.NET 是一个定时计划任务的框架,支持 .NET Core. 本文示例代码大部分来自于官方教程:Quartz.NET - Quartz.NET ...
- IDEA闪退问题
这段时间经常遇到IDEA闪退的问题,在网上搜了一大堆的博客,无外乎是说让修改下面两个文件,但是改来改去没什么卵用,最后重装IDEA,一样的,没什么用.持续时间有几个月了,内心也有点崩溃,昨天下午彻底心 ...
- javaweb新手学习之Tomcat
一.Tomcat服务器常见启动问题: (1).Java_home环境变量,由于tomcat服务器的bin目录中的一些jar文件必须使用到java类库,所以必须先配置Java_home环境变量. (2) ...
- 史上最全Java学习视频下载地址分享
http://blog.csdn.net/xlgen157387/article/details/39735141
- python初步学习
一.字符编码 ASCII表是是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 ...
- CentOS7 添加新用户并授权 root 权限
参考文章:CentOS 7中添加一个新用户并授权 # root 用户操作 $ 普通用户操作 创建用户 # adduser USERNAME # passwd USERNAME (输入密码) 授权 ro ...
- CentOS7 编译安装python3.6.8(升级python)
1.安装依赖包和需要用到的工具 yum -y install wget openssl openssl-devel 这里如果不升级openssl,安装后pip安装模块可能会出错.点我查看pip安装模块 ...
- HBase(一)——HBase介绍
HBase介绍 1.关系型数据库与非关系型数据库 (1)关系型数据库 关系型数据库最典型的数据机构是表,由二维表及其之间的联系所组成的一个数据组织 优点: 1.易于维护:都是使用表结构,格 ...
- es相关查询接口
1.查看指定es中所有的索引 GET http://IP:9200/_cat/indices?v 2.修改指定索引的相关配置信息 PUT http://IP:9200/index_name/_sett ...