Direct2D 1.1 开发笔记 特效篇(二) 简单的自定义特效

这篇开发笔记介绍了如何在Direct2D 1.1中创建一个简单的自定义特效——下阴影。通过ID2D1Factory1::RegisterEffectFromString注册特效,使用XML描述特效属性,并实现ID2D1EffectImpl接口,包括初始化、设置转变逻辑图等关键步骤。文章提供了创建和连接转变节点的实例,展示了如何结合内置的阴影特效和平移转换实现下阴影效果。
摘要由CSDN通过智能技术生成

(转载请注明出处)


这节就来一个简单的自定义特效作为概念的入门。

首先需要头文件

#include <d2d1effectauthor.h>
#include <d2d1effecthelpers.h>

为了实现一个自定义的D2D特效,需要继承 ID2D1EffectImpl并实现其接口。


好了,这里因为仅仅是介绍一下概念,所以这次的自定义特效就定为下阴影吧,微软也是这么干的。


实现就用现成的,因为特效的输入也能是特效。


Transform: 暂时称为"转变"吧,一个转变表示对图像进行一次操作

Transform Graph: 暂时称为"转变逻辑图"吧 就是将各个转变组织起来的顺序,因为特效是单输出多输入的,

所以内部应该是树


之前一节我们知道利用一个GUID即可创建一个特效,所以之前我们应该注册特效:

使用ID2D1Factory1::RegisterEffectFromString进行特效注册

参数1: 需要注册的自定义GUID

参数2: 一个XML字符串,用来形容本效果

参数3: 绑定的控制变量数组

参数4: 数组长度

参数5: 创建对象对调函数的指针,建议是私有化的静态成员方法


生成GUID的工具VS Express for Windows Desktop自带了。

工具-创建GUID

即可创建一个GUID。使用DEFINE_GUID的话,建议尽可能的推迟"initguid.h"文件的包含地点,否则会链接失败




一个XML的例子如下:

    // 第一行不能有\n不知道是不是bug
    const WCHAR* pszXml = LR"xml(<?xml version = "1.0" ?>
<Effect>
    <!--系统属性 请注意 name不支持汉字-->
    <Property name = "DisplayName" type = "string" value = "下阴影效果" />
    <Property name = "Author" type = "string" value
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值