位置转化

  1. private void DrawScale()
  2. {
  3. double majorTickUnitValue = this.ScaleSweepLenth / this.MajorDivisionsCount;
  4. double minorTickUnitValue = this.ScaleSweepLenth / this.MinorDivisionsCount;
  5. double correctionOffset = this.rootGrid.Width / ;
  6.  
  7. Double minvalue = MinValue; ;
  8.  
  9. //画主刻度
  10. for (int i = ; i < this.MajorDivisionsCount; i++)
  11. {
  12. Rectangle majorTickRect = new Rectangle();
  13. majorTickRect.Height = this.MajorTickSize.Height;
  14. majorTickRect.Width = this.MajorTickSize.Width;
  15. majorTickRect.Fill = new SolidColorBrush(this.MajorTickColor);
  16.  
  17. TransformGroup majorTickTransformGroup = new TransformGroup();
  18. TranslateTransform majorTickTranslateTransform = new TranslateTransform();
  19.  
  20. majorTickTranslateTransform.X = i * majorTickUnitValue - correctionOffset;
  21. majorTickTranslateTransform.Y = this.MajorMinorDivisionOffset;
  22.  
  23. majorTickTransformGroup.Children.Add(majorTickTranslateTransform);
  24. majorTickRect.RenderTransform = majorTickTransformGroup;
  25.  
  26. this.rootGrid.Children.Add(majorTickRect);
  27. }
  28.  
  29. }

动画

  1. private void MovePointerUsingAnimate(double oldValue, double newValue)
  2. {
  3. if (null != this.pointer)
  4. {
  5. double distanceOldAndNew = Math.Abs(newValue - oldValue);
  6. DoubleAnimation doubleAnimation = new DoubleAnimation();
  7. double animDuration = 0.0f;
  8. Storyboard movingPointerStoryboard = new Storyboard();
  9. TransformGroup transformGroup = new TransformGroup();
  10. TranslateTransform transform = new TranslateTransform();
  11.  
  12. doubleAnimation.From = oldValue;
  13. doubleAnimation.To = newValue;
  14. animDuration = distanceOldAndNew * animatingSpeedFactor;
  15. doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(animDuration));
  16.  
  17. movingPointerStoryboard.Completed +=new EventHandler(MovingPointerStoryboardStoryboard_Completed);
  18. movingPointerStoryboard.Children.Add(doubleAnimation);
  19. Storyboard.SetTarget(doubleAnimation, this.pointer);
  20.  
  21. transformGroup.Children.Add(transform);
  22. this.pointer.RenderTransform = transformGroup;
  23.  
  24. Storyboard.SetTargetProperty(doubleAnimation,
  25. new PropertyPath("(Path.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)"));
  26.  
  27. if (Math.Abs(oldValue - newValue) > )
  28. {
  29. movingPointerStoryboard.Begin();
  30. }
  31.  
  32. }
  33. }

WPF 位置转化和动画的更多相关文章

  1. WPF 3D 平移模型+动画(桥梁检测系统)

    原文:WPF 3D 平移模型+动画(桥梁检测系统) 关于WPF 3D,网上有很多旋转的例子,但是关于平移的例子并不是太多.本文并非WPF 3D扫盲篇,因此需要对WPF 3D有一定了解,至少知道View ...

  2. WPF加载等待动画

    原文:WPF加载等待动画 原文地址:https://www.codeproject.com/Articles/57984/WPF-Loading-Wait-Adorner 界面遮罩 <UserC ...

  3. 【WPF】两则动画效果

    原文:[WPF]两则动画效果 引言 利用WPF的动画可以轻而易举的实现各种各样的特效,如擦除,滑动进入等,先看两个效果图 第一个效果 这个动画其实利用了OpacityMask和LinearGradie ...

  4. WPF 加载等待动画

    原文:WPF 加载等待动画 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_29844879/article/details/80216587 ...

  5. WPF实现射线效果动画

    原文:WPF实现射线效果动画 最近的一个项目中有个需求是:从一个点向其它多个点发出射线,要求这些射线同时发出,同时到达. 我就想到了用WPF的动画来实现.WPF中有Line类用于绘制直线,但这个类中好 ...

  6. WPF特效-鱼游动动画3

    原文:WPF特效-鱼游动动画3 WPF不支持骨骼,故使用3DMax导出了序列模型文件(.mtl;.obj). 方法1: 使用Blend 2013打开所有obj文件,拖动排列一下即可在usercontr ...

  7. WPF特效-鱼游动动画

    原文:WPF特效-鱼游动动画   实现思路:           通过VisualBrush Binding方式获取鱼局部图像,在Viewport3D中创建ModelVisual3D块并把获取到的局部 ...

  8. WPF特效-鱼游动动画2

    原文:WPF特效-鱼游动动画2           纯代码撸动画实践2:           原图:(png格式)                                            ...

  9. WPF 精修篇 路径动画

    原文:WPF 精修篇 路径动画 路径动画 是让一个对象围绕指定Path 的运动路径 进行移动的动画 举栗子 路径动画 使用 Blend 来设置 是十分简单的 首先用工具 笔  点出一条线 新建一个圆形 ...

随机推荐

  1. 项目中的那些事---PHP函数

    总结工作中遇到的php函数: 1.查找:strpos("str", "substr"): 查找substr字符串在str字符串中出现的位置 第一个参数是:被查找 ...

  2. [Bootstrap]全局样式(四)

    按钮 1.基本类.btn {display/padding/margin-bottom/font-size/border-radius/border} 作用于< a:role:button &g ...

  3. 从0开始学习react(三)

    这次我们来讲解第三节知识,考虑了下,先不去讲什么理论了,毕竟网上一搜一大堆,而且理论真心看不太懂啊!!! 今天我们就直接上实例喽! 大家HIGH起来!!!(想了好久,还是没舍得删这句话) 1.根据下图 ...

  4. info sed 中文不完全文档

    快速指南: sed 的一般使用方法:sed -option 'adress|command' -f scpritfiles(1)'|' 只是用来说明性的分隔 adress 和 command,实际使用 ...

  5. 用sublime编译C++的方法

    sublime代码高亮这么好看,怎么能不用sublime敲代码呢: ) 本人用的版本是sublime Text3中文版 在网上查了查,自己的sublime现在也能编译C++了,设置步骤如下: 1.找到 ...

  6. GDI+

    1, 编译error的话一般是却 #include <comdef.h>#include <Windows.h> Windows.h内会包含Windows.h,但是因为在std ...

  7. QT编译mysql驱动

    一. 下载mysql C链接库 地址:http://dev.mysql.com/downloads/ 根据当前系统选择下载: 二. 安装下载好的mysql驱动文件 注意,一定要安装在不含有中文.空格以 ...

  8. lex&yacc6 ---error

    类的检测 http://blog.csdn.net/pandaxcl/article/details/1536784

  9. linux 学习笔记2

    vi  编辑命令并查看 i 插入 esc  转换模式 shift + : x  保存并退出    q  不保存  !强制保存 五个查看命令 cat / less / more / tail / hea ...

  10. Editplus 中将文本换行替换为<p>标签的正则表达式

    在Editplus.Notepad++编辑器里文本直接复制到在线编辑器里是不带<p>标签的,只是简单的将换行"\n"替换为"<br />" ...