用Direct2D和DWM来做简单的动画效果2
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunnyloves/article/details/50946372
在上一篇文章用Direct2D和DWM来做简单的动画效果
里写了很简单的一个例子,这个例子是MS官方的例子,那么这篇根据官方的思路自己修改修改
效果
做了绕圆盘旋转的指针样的动画,从圆心指向圆弧。见图
核心流程
总结下MS这个例子核心-由DWM计算实时路径位置部分的流程
其中,
A部分由Animation类的派生类设定,即SetStart(),SetEnd(),SetDuration()。
B部分由ComputeValue函数计算得到,注意这个函数输入时间有DWM给出,
C部分由ComputePointAtLength函数的第三个输入计算得到。
本例流程
a.初始化D2D相关类,初始化DWM对象
b.构造D2D绘图路径对象,即那个时钟的圆弧
c.按照DWM返回值刷新绘图对象的位置
d.构造D2D绘图动态对象,即根据c计算的位置,实时画出指针
部分代码
/*****Render()里省略与上例相同代码********
//画圆弧
pSink->BeginFigure(D2D1::Point2F(250, 255), D2D1_FIGURE_BEGIN_FILLED
);
pSink->AddArc(
D2D1::ArcSegment(
D2D1::Point2F(500, 255), // end point
D2D1::SizeF(85, 85),
0.0f, // rotation angle
D2D1_SWEEP_DIRECTION_CLOCKWISE,
D2D1_ARC_SIZE_SMALL
));
pSink->AddArc(
D2D1::ArcSegment(
D2D1::Point2F(250, 255), // end point
D2D1::SizeF(85, 85),
0.0f, // rotation angle
D2D1_SWEEP_DIRECTION_CLOCKWISE,
D2D1_ARC_SIZE_SMALL
));
*********
//实时画箭头
DrawArrow(D2D1::Point2F(375, 255), point);
void CD2D::DrawArrow(D2D1_POINT_2F ptbase, D2D1_POINT_2F ptend)
{
double slopy, cosy, siny;
double length; //length of Arrow
length = 0.3 * sqrt((ptbase.y - ptend.y)*(ptbase.y - ptend.y)
+ (ptbase.x - ptend.x)*(ptbase.x - ptend.x));
slopy = atan2((ptbase.y - ptend.y), (ptbase.x - ptend.x));
cosy = cos(slopy);
siny = sin(slopy);
D2D1_POINT_2F p[3];
D2D1_POINT_2F start;
start.x = ptbase.x;
start.y = ptbase.y;
p[0].x = ptend.x;
p[0].y = ptend.y;
p[1].x = ptend.x + length * cosy - (length / 2.0 * siny);
p[1].y = ptend.y + length * siny + (length / 2.0 * cosy);
p[2].x = ptend.x + length * cosy + length / 2.0 * siny;
p[2].y = ptend.y - length / 2.0 * cosy + length * siny;
m_pRT->DrawLine(ptbase, ptend, m_pYellowBrush);
m_pRT->DrawLine(p[0], p[1], m_pYellowBrush);
m_pRT->DrawLine(p[0], p[2], m_pYellowBrush);
}
用Direct2D和DWM来做简单的动画效果2的更多相关文章
- 用Direct2D和DWM来做简单的动画效果
原文:用Direct2D和DWM来做简单的动画效果 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sunnyloves/article/detail ...
- 【从无到有】教你使用animation做简单的动画效果
今天写写怎么用animation属性做一些简单的动画效果 在CSS选择器中,使用animition动画属性,调用声明好的关键帧 首先声明一个动画(关键帧): @keyframes name{ from ...
- ExtJS简单的动画效果2(ext js淡入淡出特效)
Ext 开发小组则提供了 Fx 类集中处理了大部分常用的 js 动画特效,减少了我们自己手写代码的复杂度. 面我给出一个简单的实例代码,其中囊括了大部分的 Ext 动画效果: (注意导入js和css文 ...
- 32.ExtJS简单的动画效果
转自:http://blog.sina.com.cn/s/blog_74684ec501015lhq.html 说明:这篇文章的大部分内容来源于网上,经过自己实现其效果后,整理如下: 在进行 Java ...
- JavaScript做简单的购物车效果(增、删、改、查、克隆)
比如有时候遇到下面这种情况,点击加入购物车,然后在上方的购物车中动态的添加商品以及商品的信息,我们就可以通过JavaScript实现简单的这些操作. 首先我们需要在html文档中,通过css对页面的布 ...
- NSLayoutConstraint 布局,配合简单的动画效果
demo地址 :链接: http://pan.baidu.com/s/1c00ipDQ 密码: mi4c 1 @interface ViewController () @property (nonat ...
- css制作简单loading动画效果【css3 loading加载动画】
曾经以为,loading的制作需要一些比较高深的web动画技术,后来发现大多数loading都可以用“障眼法”做出来.比如一个旋转的圆圈,并不都是将gif图放进去,有些就是画个静止图像,然后让它旋转就 ...
- tableView简单的动画效果
tableView 中一些动画效果通常都是实现willDisplayCell的方法来展示出一些动画的效果 (1).带有3D效果的小型动态展示 -(void)tableView:(UITableView ...
- jquery 最简单的动画效果
<p style="border: 1px solid red"> 我会慢慢变大 </p> <a>dianji</a> <sc ...
随机推荐
- ch5 vlsms
Variabel Length Subnet Mask vlsms 较早的路由协议 ripv1 没有为子网准备的字段,子网信息会被丢失. 这意味着如果一个路由器运行着一个rip协议具有一个确定的子网掩 ...
- PIL的ImageDraw的颜色问题
因为我的图片的单通道的,所以用 draw = ImageDraw.Draw(image) im_width, im_height =], info[], info[], info[]) color=d ...
- @Restcontroller与@controller区别
@RestController注解相当于@ResponseBody + @Controller合在一起的作用. 1)如果只是使用@RestController注解Controller,则Control ...
- 最大似然估计(Maximum likelihood estimation)
最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:"模型已定,参数未知".简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差 ...
- (二)通过JAVA调用SAP接口 (增加一二级参数)
(二)通过JAVA调用SAP接口 (增加一二级参数) 一.建立sap连接 请参考我的上一篇博客 JAVA连接SAP 二.测试项目环境准备 在上一篇操作下已经建好的环境后,在上面的基础上新增类即可 三. ...
- Spring MVC(三)--控制器接受普通请求参数
Spring MVC中控制器接受参数的类方式有以下几种: 普通参数:只要保证前端参数名称和传入控制器的参数名称一致即可,适合参数较少的情况: pojo类型:如果前端传的是一个pojo对象,只要保证参数 ...
- hive启动一些错误记录
java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMeta ...
- Rabbitmq交换机三种模式介绍
1.topic 将路由键和某模式进行匹配.此时队列需要绑定要一个模式上.符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词.因此“abc.#”能够匹配到“abc.def.ghi”,但是“abc. ...
- PHP1.6--数组
一.数组的键值操作函数 1.array_values() 函数作用是返回数组中所有元素的值,只有一个参数,规定传人给定数组,返回一个包含给定数组中所有值的数组,但不保留键名 被返回的数组将使用顺序的数 ...
- 【python之路24】装饰器
1.装饰器的应用场景 通常IT公司的程序开发是分工的,例如某公司某个部门负责底层函数的开发,另一个部门利用其函数实现高级功能,那么如果负责底层开发的函数需要改动,一般来说不会直接在函数上进行修改,通常 ...