如何在winRT中用动画绘制圆弧?

2023-12-07

我是 WinRT 和 Blend 的新手,我需要在 WinRT 应用程序中使用绘图效果绘制数字 1、2 等。要求就像应用程序将绘制数字。

任何帮助将非常感激。

提前致谢。


我认为您需要拼凑几个故事板才能实现这一目标,我真的建议您使用 Blend 来实现这一点!

打开一个空白项目,在对象和时间线下有一个加号,单击它并添加一个新的故事板。将故事板行的黄色条向前移动几毫秒。绘制动画的一部分,单击开始录制并将该部分移动一点。停止录音。继续一点一点地做,直到得到你想要的。 AS用于模仿绘画。分解你想要的样子,制作数字将包含的所有单独部分,并将它们的不透明度设置为 O。我建议使用关键帧(用于移动)和双动画作为不透明度。

这是沿着曲线的一段路径的快速演示,我做得非常快,所以它离完美还很远,但它是为了演示开始和停止以及它们如何组合在一起:

<Page
x:Class="App10.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App10"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" FontFamily="Global User Interface">
<Page.Resources>
    <Storyboard x:Name="StoryboardA">
        <PointAnimationUsingKeyFrames EnableDependentAnimation="True" Storyboard.TargetProperty="(Path.Data).(PathGeometry.Figures)[0].(PathFigure.StartPoint)" Storyboard.TargetName="path">
            <EasingPointKeyFrame KeyTime="0:0:0.3" Value="107.647,394.591"/>
            <EasingPointKeyFrame KeyTime="0:0:0.6" Value="147.75,352.713"/>
            <EasingPointKeyFrame KeyTime="0:0:0.9" Value="197.45,311.391"/>
            <EasingPointKeyFrame KeyTime="0:0:1.2" Value="268.45,251.392"/>
            <EasingPointKeyFrame KeyTime="0:0:1.4" Value="346.45,196.392"/>
            <EasingPointKeyFrame KeyTime="0:0:1.6" Value="417.45,151.392"/>
            <EasingPointKeyFrame KeyTime="0:0:1.8" Value="503.841,99.7321"/>
            <EasingPointKeyFrame KeyTime="0:0:2" Value="604.45,53.3924"/>
            <EasingPointKeyFrame KeyTime="0:0:2.3" Value="705.45,13.392"/>
        </PointAnimationUsingKeyFrames>
        <PointAnimationUsingKeyFrames EnableDependentAnimation="True" Storyboard.TargetProperty="(Path.Data).(PathGeometry.Figures)[0].(PathFigure.Segments)[0].(LineSegment.Point)" Storyboard.TargetName="path">
            <EasingPointKeyFrame KeyTime="0:0:0.3" Value="55.8129,445.539"/>
            <EasingPointKeyFrame KeyTime="0:0:0.6" Value="95.9156,403.661"/>
            <EasingPointKeyFrame KeyTime="0:0:0.9" Value="139.796,364.539"/>
            <EasingPointKeyFrame KeyTime="0:0:1.2" Value="198.646,311.319"/>
            <EasingPointKeyFrame KeyTime="0:0:1.4" Value="266.536,258.09"/>
            <EasingPointKeyFrame KeyTime="0:0:1.6" Value="330.282,210.352"/>
            <EasingPointKeyFrame KeyTime="0:0:1.8" Value="408.248,157.542"/>
            <EasingPointKeyFrame KeyTime="0:0:2" Value="500.776,106.108"/>
            <EasingPointKeyFrame KeyTime="0:0:2.3" Value="597.831,60.216"/>
        </PointAnimationUsingKeyFrames>
    </Storyboard>
</Page.Resources>

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <Path Data="M73.5,639.5 C73.5,639.5 539.5,33.5 1289.5,79.5 L1535,101.5" HorizontalAlignment="Left" Height="572.492" Margin="68.5,72.008,-174,0" Stretch="Fill" Stroke="Red" StrokeThickness="10" UseLayoutRounding="False" VerticalAlignment="Top" Width="1471.5"/>
    <Path x:Name="path" HorizontalAlignment="Left" Height="507.972" Margin="66.05,137.358,0,0" Stroke="#FFFFE100" StrokeThickness="15" UseLayoutRounding="False" VerticalAlignment="Top" Width="712.95">
        <Path.Data>
            <PathGeometry>
                <PathFigure StartPoint="53.45,448.392">
                    <LineSegment Point="7.50001,500.472"/>
                </PathFigure>
            </PathGeometry>
        </Path.Data>
    </Path>
</Grid>

Here is an image of how it looks like, its the yellow thing that moves - the curved movement is just an example to show you can piece together to create any movement you want. Something called easing function can even do this for you, see image below. Here is an image of how it looks like, its the yellow thing that moves - the curved movement is just an example to show you can piece together to create any movement you want. Something called easing function can even do this for you, see image below.

Here are easing functions available, play around with them, in combination with the items in the storyboard to create the desired effect. Here are easing functions available, play around with them, in combination with the items in the storyboard to create the desired effect.

MSD 上对不同的缓动函数进行了很好的解释N

上面的例子中没有双重动画,但它们看起来像这样:

 <Storyboard x:Name="myStoryboard">
                        <DoubleAnimation Duration="0:0:1"                                 
                            Storyboard.TargetName="myImage"             
                            Storyboard.TargetProperty="Opacity"            
                            From="0" To="1" />
                    </Storyboard>

这是一项艰巨的工作,需要时间。我建议您在执行此操作之前先坐下来学习如何使用 Blend 并使用故事板。有很多很棒的教程,值得花时间。就我个人而言,我倾向于让设计师帮助制作动画,正如您在上面的故事板中看到的那样,我不是动画专家 - 有很多事情需要记住,特别是在应用程序性能方面。

我还想指出 Modern UI(Windows 应用商店应用程序所需的设计语言)背后的一些主要思想,即保持真正的数字化。该应用程序不应模仿现实生活中的事物,这没有任何意义,因为它是一个应用程序而不是“现实”。

来自 MSDN:真正数字化充分利用数字媒体。 消除物理界限,创造比现实更高效、更轻松的体验。 接受我们是屏幕上的像素这一事实。 采用大胆、充满活力、清晰的色彩和图像进行设计,超越现实世界材料的限制。

值得一看的视频: http://channel9.msdn.com/Events/Ch9Live/Channel-9-Live-at-Tech-Ed-Europe-2012/Panel-Modern-UI-Development

所以想一想,也许你不需要绘图动作。也许只是快速淡入,就像这样:

<Page
x:Class="App10.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App10"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" FontFamily="Global User Interface">
<Page.Resources>
    <Storyboard x:Name="StoryboardB">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="textBlock">
            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</Page.Resources>

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Height="145" Margin="465,386,0,0" TextWrapping="Wrap" Text="AB" VerticalAlignment="Top" FontSize="50" Width="343"/>
</Grid>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在winRT中用动画绘制圆弧? 的相关文章

  • 如何在 C# 中的 HttpClient 中使用凭据?

    我在使用 HttpClient 类访问 Delicious API 时遇到一些问题 我有以下代码 try const string uriSources https api del icio us v1 tags bundles all p
  • Windows Phone 7 中的 ASCII 编码

    有没有办法在 Windows Phone 7 中使用 ASCIIEncoding 除非我做错了什么Encoding ASCII不存在 我需要它来进行 C gt PHP 加密 因为 PHP 在 SHA1 加密中仅使用 ASCII 有什么建议么
  • dependency walker 在正确运行的系统上给我错误

    我的系统上缺少 dll 我有以下消息 无法加载文件或程序集 mydll dll 或其依赖项之一 当然 mydll 存在于此 它很可能是它所依赖的另一个 dll 我下载了 dependency walker 来检查它可能是什么 我首先在另一个
  • 弹出窗口或弹出窗口显示附加信息

    我想在我的应用程序顶部显示带有附加信息的弹出窗口 我的信息是Listview大约 500 个项目我都尝试过 有问题flyout gt 它里面可能有scrollViewer 所以我的列表视图不能正确虚拟化 其他一切都可以 有我的代码 Flyo
  • WinRT 作为 Win32 API 的替代品

    互联网上有很多博客说 winrt 是 win32 api 的替代品 这是真的吗 甚至我读到为 Metro 应用程序开发的应用程序使用 winrt 所以我理解正确吗 那些 Metro 应用程序必须经过 winrt 而经典应用程序必须经过 wi
  • 多个事件处理程序触发,为什么?

    我很难解决这个问题 我已经呆了三个小时了 但我仍然不明白为什么会这样 这是代码 private void Catagory SelectionChanged object sender SelectionChangedEventArgs e
  • 给定的 System.Uri 无法转换为 Windows.Foundation.Uri

    我正在尝试以编程方式在 XAML Metro 应用程序中加载 BitmapImage 这是我的代码 var uri new Uri Images 800x600 BackgroundTile bmp UriKind RelativeOrAb
  • 使用 BitmapEncoder 生成时如何使 GIF 循环重复

    我能够使用 BitmapEncoder C WinRT 创建动画 gif 但是 我一直无法弄清楚如何让GIF循环回来并从头开始 没有尝试太多 因为我不确定要尝试什么 搜索了更多要在 GIF 上设置的属性 但找不到任何相关内容 好吧 终于能弄
  • WP7:将参数传递到新页面?

    在 Windows Phone 7 Silverlight 应用程序中 我使用以下命令调用新页面 NavigationService Navigate new Uri View SecondPage xaml UriKind Relativ
  • 应用程序在尝试绑定隔离存储映像时崩溃

    在我的应用程序中 我使用下面提到的辅助方法将我的独立存储图像绑定到图像控件 我从链接 获得了这个辅助方法将存储在独立存储中的图像绑定到 Windows Phone 中的图像控件 https stackoverflow com questio
  • 如何获取 Windows Phone 7 的 useragent 字符串?

    我需要获取手机的用户代理字符串 但我在 API 中没有找到任何允许这样做的内容 我遇到过以下两篇描述用户代理字符串格式的博客文章 http blogs msdn com b iemobile archive 2010 03 25 ladie
  • WinRT 类库和 Windows Phone 8 之间的兼容性如何?

    我想要一个可以在 WinRT 和 Windows Phone 8 下运行的类库 我需要做什么 对 Cerebrate 的答案 1 可移植类库是正确的选择 然而 PCL 并不是一根魔杖 无法弥合 WP8 和 Win8 之间的许多不一致之处 对
  • 在 Windows 8 中获取类型程序集

    我正在尝试在 Windows 8 中使用 MEF 为了建立我的AssemblyCatalog对于容器 我需要对程序集的引用 在过去 我会这样做 var catalog new AssemblyCatalog typeof App Assem
  • 如何为 Windows toast 注册协议?

    如何注册 Windows toast 协议 样本中来自https blogs msdn microsoft com tiles and toasts 2015 07 02 adaptive and interactive toast not
  • Mvvm跨本地化:运行时切换

    有没有办法在运行时将当前语言更改为另一种语言 例如 能够在单击按钮时或启动应用程序时进行切换 获取用户语言并进行切换 如何告诉插件在启动时检查用户语言 在此先感谢您的帮助 有没有办法在运行时将当前语言更改为另一种语言 是的 打电话build
  • 以编程方式设置 Windows Phone 7 音量

    有没有办法以编程方式更改 Windows Phone 7 的声音设置 启用或禁用约会和所有其他通知的声音 还可以更改全局音量 即 铃声 没有 API 可以启用您提到的任务 您可以使用 XNA API 调整应用程序中声音的音量 但这只是当前可
  • 使用资源进行主题化,无需 Blend 呕吐

    WPF 的伟大之处在于 我应该能够在整个应用程序中使用 StaticResource MyBackground 而不是 White 然后通过更改资源定义重新定义整个应用程序的外观 问题是如果您在子控件中引用了全局资源 Expression
  • Windows 8 的 Grid.IsSharedSizeScope 等效项

    是否有任何类型的与 WPF 等效的简单 非自定义编码 Grid IsSharedSizeScope在 Windows 8 RT XAML 中 I have ListViewItem分为 3 个水平部分 这 3 列需要与所有边界对齐 每个列的
  • WinRT 不支持 Assembly.GetCallingAssembly,但适用于可移植类库?

    我需要获取有关调用我的组件的程序集的一些元数据 因此 使用Assembly GetCallingAssembly 似乎是天作之合 但是 我发现它在除 Windows 应用商店之外的任何地方都适用 支持的地方 手机7 0 http msdn
  • 后台地理围栏 Windows Phone 8.1 (WinRT)

    Issue 我试图在 WP8 1 WinRT 中发生地理围栏事件 进入 退出 时触发后台任务 我已经编写了一个示例应用程序来尝试让它工作 但似乎无法做到这一点 到目前为止 我已采取以下步骤来尝试让地理围栏在后台运行 检查位置功能 创建 注册

随机推荐

  • NetUIHWND 和 DirectUIHWND [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 使用Spy 工具 似乎某些微软应用程序使用网络UIHWND and 直接UIHWND窗口类 例如 Word 2010 的功能区似乎是 NetUIHW
  • ActiveAdmin:编辑模型实例时下拉菜单太大

    我有两个模型 UserDevice and UserInfo如下 在 schema rb 中 create table user devices force cascade do t t integer user info id t str
  • 在 Neo4j 中将实体与适当的关系相关联?

    我尝试使用 Neo4j 对项目 员工和项目角色之间的关系进行建模 每个项目都有一个称为 项目经理 的角色和一个称为 总监 的角色 我试图在数据模型中实现的是能够说 对于项目 A 主管是员工 X 就我的目的而言 重要的是 项目 员工 和 角色
  • AT&T 汇编语言中的“.=”是什么意思?

    我正在尝试编写一个启动程序 内容如下 text balabala globl start start balabala start 510 byte 0x55 0xaa 顺便说一句 我也无法理解 byte 0x55 0xaa 是什么意思 它
  • 给定一组 n 个整数,返回总和为 0 的 k 个元素的所有子集

    给定一组未排序的n整数 返回总和为 0 的所有大小为 k 的子集 即每个集合有 k 个唯一元素 所以我给了面试官以下解决方案 我研究过极客观点 没有使用额外的空间 一切都就地完成 等等 但是当然成本是 O n k 的高时间复杂度 其中k t
  • django-autocomplete-light 错误 = 'list' 对象没有属性 'queryset'

    我是 django 的新手 我需要你的帮助 在设置我的测试之后 我已经尝试了很多天来理解 django autocomplete light http 192 168 0 108 8000 country autocomplete 工作 数
  • 将列变量字符串从“1”更改为“01”

    我在数据框中有一列是字符类型 变量是 1 01 2 01 3 03 4 04 等的混合 我如何选择所有没有前导 0 和格式的内容 以便它们都是 01 02 03 04 等 我们需要首先将其转换为numeric并使用sprintf df1 c
  • 使用 NetworkX 测量图之间的相似性

    I have 两张图A and B 它们可能是同构的 完全不同的 或者有一些相似之处 很少有节点是相同的 或者很少有节点共享相同的边 我想看看 检查这些图表有多么不同 相似 networkx is isomorphic 是一种方法 然而 这
  • Kohana ORM 和验证,有问题

    尝试使用适用于 Kohana 3 2 的 ORM 进行验证 目前我有我的模型
  • New-Object:找不到“PSCredential”的重载且参数计数:“2”

    我希望将一封电子邮件发送给多个收件人 而且我不想提示输入用户名和密码 所以我使用了下面的字符串转换 但随后我遇到了下面的错误消息 您能否提出解决此问题的答案 string ValidateNotNullOrEmpty secpasswd Q
  • 如何从 NSImage 保存 PNG 文件(视网膜问题)

    我正在对图像进行一些操作 完成后 我想将图像以 PNG 格式保存在磁盘上 我正在执行以下操作 void saveImage NSImage image atPath NSString path image lockFocus NSBitma
  • 从(任意)连续概率分布进行模拟[重复]

    这个问题在这里已经有答案了 例如 对于实数线上定义的归一化概率密度函数 p x 2 pi 1 exp x exp x 这只是一个例子 该解决方案应该适用于我们可以定义的任何连续 PDF R 中是否有一个包可以从发行版进行模拟 我知道 R 的
  • VBA 中表单宽度和高度的单位是什么?

    我正在为 Word 2007 编写 VBA 程序 我创建了一个用户窗体 需要使用脚本调整其大小 我注意到它不是像素 Me Width pixelW form appears about 20 larger than the pixel wi
  • gensim TransformedCorpus数据高效转换为数组

    是否有比下面的逐行方法更直接或更有效的方法将主题概率数据从 gensim interfaces TransformedCorpus 对象获取到 numpy 数组 或者 pandas 数据帧 from gensim import models
  • VBA:写入日志文件的子程序

    我在工作簿中定义了一组宏 我想向用户提供在日志文件中记录与这些宏相关的事件的选项 我通过在 ThisWorkbook 中创建以下内容来启动日志 Public writeLog as Boolean Public logWrite as Ob
  • 使用 Jackson 序列化枚举

    我有一个如下所述的枚举 public enum OrderType UNKNOWN 0 Undefined TYPEA 1 Type A TYPEB 2 Type B TYPEC 3 Type C private Integer id pr
  • 为什么我的文本字段似乎不为零,即使我将该字段留空?我的 if 语句的“else”部分没有被读取

    我正在通过制作一个保存客户数据的应用程序来练习快速编程 该应用程序有几个文本字段 人们应该在其中输入姓名 电子邮件地址 电话号码和购买的产品数量 然后通过 提交 按钮 他们将该信息保存到数据库中 但是 如果其中一个字段为空 则应抛出错误 并
  • Tortoise Git - 拉取导致冲突后丢失提交

    这个问题完美地描述了我们的情况 当 Git 或 TortoiseGit 出现冲突时 正确的提交 推送方式是什么 对于上述问题没有答案 至少没有一个被接受的答案 这似乎是解决方案之一 https stackoverflow com a 121
  • 并发异步/等待与睡眠

    我想知道答案是否为这个相当老的问题about future 仍然适用于更新的语言结构async await 似乎是这样 因为下面的代码打印 hello good bye hello 虽然导游 says futures join 宏使得可以等
  • 如何在winRT中用动画绘制圆弧?

    我是 WinRT 和 Blend 的新手 我需要在 WinRT 应用程序中使用绘图效果绘制数字 1 2 等 要求就像应用程序将绘制数字 任何帮助将非常感激 提前致谢 我认为您需要拼凑几个故事板才能实现这一目标 我真的建议您使用 Blend