WPF太阳、地球、月球运动轨迹模拟
WPF模拟太阳。月球、地球三者运动轨迹的模拟,现在还没有加上太阳自传的动画,有兴趣的可以加上。
主要是利用EllipseGeometry实现路径的绘制
xaml代码如下:
<Window
x:Class="WpfApp11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="地球、月球、太阳运动模拟"
Width="1366"
Height="768"
WindowStartupLocation="CenterScreen">
<Grid>
<Grid.Background>
<ImageBrush ImageSource="earth.jpg" />
</Grid.Background>
<Ellipse
Name="ellipse3"
Width="150"
Height="150"
Margin="619,321,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
ToolTip="太阳">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
<GradientStop Offset="0.246" Color="#FFFFCA00" />
<GradientStop Offset="0.967" Color="#FFFF0034" />
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<!-- 通过使用EllipseGeometry实现椭圆路径的绘制 -->
<Path
Margin="308,136,120,81"
RenderTransformOrigin="0.415,0.498"
Stroke="#FFFF7900"
StrokeThickness="5">
<Path.Data>
<EllipseGeometry
x:Name="e1"
Center="400 250"
RadiusX="400"
RadiusY="250" />
</Path.Data>
</Path>
<Grid
Name="grid1"
Width="484"
Height="352"
Margin="30,-12,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top">
<Grid.RenderTransform>
<MatrixTransform x:Name="grid" />
</Grid.RenderTransform>
<!-- Grid触发器 -->
<Grid.Triggers>
<EventTrigger RoutedEvent="Page.Loaded">
<BeginStoryboard>
<Storyboard x:Name="sb1" RepeatBehavior="Forever">
<MatrixAnimationUsingPath
x:Name="ma1"
Storyboard.TargetName="grid"
Storyboard.TargetProperty="Matrix"
Duration="0:1:0" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Grid.Triggers>
<Ellipse
Name="ellipse1"
Width="100"
Height="100"
Margin="227,94,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
ToolTip="地球">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
<GradientStop Offset="0" Color="#FFE0DFDD" />
<GradientStop Offset="0.975" Color="#FF0035FF" />
</LinearGradientBrush>
</Ellipse.Fill>
<Ellipse.RenderTransform>
<TransformGroup>
<MatrixTransform x:Name="earth" />
</TransformGroup>
</Ellipse.RenderTransform>
<Ellipse.Triggers>
<EventTrigger RoutedEvent="Page.Loaded" />
</Ellipse.Triggers>
</Ellipse>
<Ellipse
Name="ellipse2"
Width="50"
Height="50"
Margin="228,40,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
ToolTip="月球">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
<GradientStop Offset="0" Color="White" />
<GradientStop Offset="0.943" Color="#FFDDD2BE" />
</LinearGradientBrush>
</Ellipse.Fill>
<Ellipse.RenderTransform>
<TransformGroup>
<MatrixTransform x:Name="moon" />
</TransformGroup>
</Ellipse.RenderTransform>
<Ellipse.Triggers>
<EventTrigger RoutedEvent="Page.Loaded">
<BeginStoryboard>
<Storyboard x:Name="sb2" RepeatBehavior="Forever">
<MatrixAnimationUsingPath
x:Name="ma2"
Storyboard.TargetName="moon"
Storyboard.TargetProperty="Matrix"
Duration="0:0:30" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Ellipse.Triggers>
</Ellipse>
<Path
Width="122"
Height="200"
Margin="262.522,59,0,93"
HorizontalAlignment="Left"
Stroke="#FF00FF40"
StrokeThickness="5">
<Path.Data>
<EllipseGeometry
x:Name="ellipseGeometry1"
Center="50 100"
RadiusX="50"
RadiusY="100">
<EllipseGeometry.Transform>
<SkewTransform AngleY="-20" />
</EllipseGeometry.Transform>
</EllipseGeometry>
</Path.Data>
</Path>
</Grid>
<TextBox
Width="448"
Height="110"
Margin="891,7,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Background="{x:Null}"
BorderBrush="#FF0012FF"
BorderThickness="0"
Foreground="White"
Text="地球饶太阳公转,月球饶地球公转。太阳、地球、月球都在自转太阳是太阳系的主宰,是恒星。地球是太阳系的一颗行星,月球是地球的一颗天然卫星。地球绕着太阳公转,月球绕着地球公转。太阳不可能位于地球和月球之间。"
TextWrapping="Wrap" />
</Grid>
</Window>
最后效果如图:
public MainWindow()
{
InitializeComponent();
ma2.PathGeometry = ellipseGeometry1.GetFlattenedPathGeometry();
ma1.PathGeometry = e1.GetFlattenedPathGeometry();
}
WPF太阳、地球、月球运动轨迹模拟的更多相关文章
- WPF案例(二)模拟Apple OS 界面前后180度反转
原文:WPF案例(二)模拟Apple OS 界面前后180度反转 我们在设计应用程序界面的时候,为了充分利用界面空间,住住需要灵活的界面布局方式,比如可以在界面正面空间上定义一个Chart,背面空间上 ...
- WPF案例(-)模拟Windows7 Win+Tab切换
原文:WPF案例(-)模拟Windows7 Win+Tab切换 一个使用Wpf模拟Windows7 Win+Tab页面切换的小程序,使用快捷键Ctrl+Down或Ctrl+Up在示例程序各个页面元素之 ...
- 开玩笑html5(五岁以下儿童)---绕地球月球,地球绕太阳运动(canvas实现,同样可以移动哦)
请珍惜劳动小编成果,这篇文章是原来小编,转载请注明出处. 速度的參数与真实速度有点差距.大家能够自行调整 <!DOCTYPE html> <html> <head> ...
- 使用Xcode + Python进行IOS运动轨迹模拟
前言 在某些app中,需要根据用户的实时位置来完成某些事件 例如跑步打卡软件(步道乐跑).考勤打卡软件(叮叮).某些基于实时位置的游戏(Pokemon Go.一起来捉妖) 一般解决办法是通过使用安卓模 ...
- 太阳地球月亮运行动画(使用@keyframes)
闲来无事的demo <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- wpf绑定静态变量,模拟rem单位
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin ...
- 【WPF】三维模型中的“照相机”
WPF 部分支持三维模型,为啥说是部分支持?毕竟 WPF 的侧重点还是在应用开发上,虽然也有些游戏是用 WPF 开发的,不过,老周想啊,如果真要开发游戏,最好用专门的框架,WPF 应当用于开发应用功能 ...
- three.js 制作太阳系统
最近学了three.js,想拿来练练手,喜欢宇宙,于是亲手撸代码来完成这个,为了更真实,于是查了一些相关资料.1. 距离太阳由近及远分别是[水星,金星,地球,火星,木星,土星,天王星,海王星]2. 他 ...
- opengl入门学习
OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...
随机推荐
- hadoop调优之一:概述 分类: A1_HADOOP B3_LINUX 2015-03-13 20:51 395人阅读 评论(0) 收藏
hadoop集群性能低下的常见原因 (一)硬件环境 1.CPU/内存不足,或未充分利用 2.网络原因 3.磁盘原因 (二)map任务原因 1.输入文件中小文件过多,导致多次启动和停止JVM进程.可以设 ...
- UE4 Editor快捷键(ShortCut Key)
转载请注明出处,所有权利保留. Unreal Engine4的快捷键现在无官方文档,因为他们工作比较忙啊. 记录时间:2014-10-15 现在自己整理一个,仅供参考. 因为他们的team成员说的还有 ...
- HTML5开发移动web应用——SAP UI5篇(9)
之前我们对于app的构建都是基于显示的.如今我们来格式化一下,引入很多其它的SAP UI5组件概念.这使得APP的一个界面更有层次性.更像是一个手机应用的界面,而且更好地使用SAP UI5中提供的功能 ...
- jquery获取选中select的文本,值等
jquery获取select选择的文本与值获取select :获取select 选中的 text : $("#ddlregtype").find("option:s ...
- Android JNI 自定义对象为参数和返回值
ndroid JNI 提供了很强大的支持,不仅可以采用基本类型做为参数和返回值,同时也支持自定义对象做为参数和返回值,以下举例说明. 一.定义作为输入和返回的自定义类 (仅提供两个简单类型和一个打印函 ...
- jquery-6 jquery属性选择器
jquery-6 jquery属性选择器 一.总结 一句话总结:jquery操作就是选择器加jquery对象的各种方法. 1.大量操作样式用什么方式? 大批量样式通过加类和减类完成 2.jquery中 ...
- 微信测试号开发之九 微信网页授权:页面获取用户openid
原文链接:https://blog.csdn.net/qq_37936542/article/details/78981369 一:配置接口 注意:这里填写的是域名(是一个字符串),而不是URL,因此 ...
- 移动端UI界面设计:APP字体排版设计的七个原则
移动端UI界面设计:APP字体排版设计的七个原则 发布于: 2015 年 2 月 9 日 by admin 再来谈移动端APP字体排版设计,也许有人会说,这个还有什么好说的呢?但是真正能够运用好APP ...
- 【hdu5692】Snacks
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submissio ...
- TCP三次握手和四次握手最直接的理解
网上有非常多文章讲TCP为什么建立连接时须要三次握手,关闭连接时须要四次握手.讲了非常多原理.反而让非常多人难以理解. 事实上仅仅有一句话:TCP连接是两个端点之间的事.因为TCP连接是可靠连接,所以 ...