原文:用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的更多相关文章

  1. 用Direct2D和DWM来做简单的动画效果

    原文:用Direct2D和DWM来做简单的动画效果 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sunnyloves/article/detail ...

  2. 【从无到有】教你使用animation做简单的动画效果

    今天写写怎么用animation属性做一些简单的动画效果 在CSS选择器中,使用animition动画属性,调用声明好的关键帧 首先声明一个动画(关键帧): @keyframes name{ from ...

  3. ExtJS简单的动画效果2(ext js淡入淡出特效)

    Ext 开发小组则提供了 Fx 类集中处理了大部分常用的 js 动画特效,减少了我们自己手写代码的复杂度. 面我给出一个简单的实例代码,其中囊括了大部分的 Ext 动画效果: (注意导入js和css文 ...

  4. 32.ExtJS简单的动画效果

    转自:http://blog.sina.com.cn/s/blog_74684ec501015lhq.html 说明:这篇文章的大部分内容来源于网上,经过自己实现其效果后,整理如下: 在进行 Java ...

  5. JavaScript做简单的购物车效果(增、删、改、查、克隆)

    比如有时候遇到下面这种情况,点击加入购物车,然后在上方的购物车中动态的添加商品以及商品的信息,我们就可以通过JavaScript实现简单的这些操作. 首先我们需要在html文档中,通过css对页面的布 ...

  6. NSLayoutConstraint 布局,配合简单的动画效果

    demo地址 :链接: http://pan.baidu.com/s/1c00ipDQ 密码: mi4c 1 @interface ViewController () @property (nonat ...

  7. css制作简单loading动画效果【css3 loading加载动画】

    曾经以为,loading的制作需要一些比较高深的web动画技术,后来发现大多数loading都可以用“障眼法”做出来.比如一个旋转的圆圈,并不都是将gif图放进去,有些就是画个静止图像,然后让它旋转就 ...

  8. tableView简单的动画效果

    tableView 中一些动画效果通常都是实现willDisplayCell的方法来展示出一些动画的效果 (1).带有3D效果的小型动态展示 -(void)tableView:(UITableView ...

  9. jquery 最简单的动画效果

    <p style="border: 1px solid red"> 我会慢慢变大 </p> <a>dianji</a> <sc ...

随机推荐

  1. Vue报错——Unknown custom element: <shop-slide> - did you register the component correctly?

    参考: https://blog.csdn.net/jiangyu1013/article/details/85676292 解决:除了import组件外,还要在components中添加 <t ...

  2. nosql BASE

  3. 网络结构解读之inception系列四:Inception V3

    网络结构解读之inception系列四:Inception V3   Inception V3根据前面两篇结构的经验和新设计的结构的实验,总结了一套可借鉴的网络结构设计的原则.理解这些原则的背后隐藏的 ...

  4. CodeChef:Chef and Problems(分块)

    CodeChef:Chef and Problems 题目大意 有一个长度为n的序列$a_1,a_2,……,a_n$,每次给出一个区间[l,r],求在区间内两个相等的数的最远距离($max(j-i,满 ...

  5. AppServer获取参数的方法

    AppServer中从APP_PARAM表中根据param_code获取param_value: appManageService.getParamValueByCode(param_code) -- ...

  6. 在skyline中将井盖、雨水箅子等部件放到地面模型上

    公司三维建模组遇到这样的一个问题,怎样将井盖.雨水盖子恰好放在做好的地面模型上.传统的方法是在skyline中逐个调整井盖的对地高度,就是调整为恰好能放在地面上.或者选择很粗糙的一个方法,在“高度”属 ...

  7. XML 映射文件

    MyBatis 的真正强大在于它的映射语句,这是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...

  8. 免费提取百度文库 doc 文件

    首先说明,今天要推荐的这款软件,不能不能不能免费提取百度文库里 PDF 格式的文件. 对于其他的格式,无论收费与否都能免费提取. 只是口头说说免不了耍流氓的嫌疑,举栗如下: 百度文库里<喜迎党的 ...

  9. Spring.Net2.0+NHibernate4.0 +Asp.Net Mvc4 一

    1.创建项目结构 控制器:    SN.Controllers 数据访问 :SN.Dao 实体映射: SN.Models 服务层:     SN.Servers 视图层:   SN.Web 2.添加需 ...

  10. node学习记录——搭建web服务器

    web服务器的基本知识 功能:1.接收HTTP请求(get,post,delete,put)2.处理HTTP请求 常见的web服务器架构: 1. Nginx/Apache:负责接收http请求,确定谁 ...