如何在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中用动画绘制圆弧? 的相关文章

  • 检测Windows Phone 7上已显示屏幕键盘

    简单的问题 如何检测windows mobile 7上已经显示屏幕键盘 是否有我可以添加侦听器的事件 它占据了大约一半的屏幕 我想在它显示时向上滚动视图 EDIT 下面的评论更清楚地表明了我想要做什么 我有一个文本框输入 当用户在其中输入时
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 禁用 WP7 浏览器控件中的滚动功能?

    是否可以在 Windows Phone 7 1 中禁用 Web 浏览器控件中的滚动 我已经看到很多关于它的问题 Windows Phone 7 0 Silverlight 但还没有答案 有任何想法吗 有一个博客文章在这里 http www
  • 如何在 XAML 中使用其他项目的图像?

    我正在构建一个包含多个项目的解决方案 Windows Phone 应用程序 其中一个项目是用于 品牌 的 它包含一些特定的代码和图像 其想法是该项目可以更换为不同的品牌 我的应用程序页面位于主项目中 我想在主应用程序的 UI 中显示存储在第
  • 虚拟化 ListBox 的 ItemsControl 上的边距无法正常工作

    我对扩展的类有疑问ListBox在 Windows Phone 7 Silverlight 中 我们的想法是拥有一个完整的ScrollViewer 黑色 例如充满整个手机屏幕 并且ItemsPresenter 红色 有边距 绿色 这用于在整
  • 如何检测 toolkit:GestureListener Hold 何时停止?

    有什么方法可以检测到这一点吗 我想只要用户按住图标就继续执行操作 而不是使用GestureListener为此 您可以使用鼠标操作事件来检测执行操作的时间 例如 听听MouseLeftButtonDown了解用户何时触摸了图标 继续执行该操
  • 使用 Linq to XML 将 XElement 添加到 XML 文件

    使用 Linq to XML 我尝试将 XElement 添加到现有 XML 文件 它必须在 Windows Phone NET 框架中完成 目前我的 XML 文件如下所示
  • 以编程方式启用 Wi-Fi 和蓝牙

    我需要编写 2 个按钮的处理程序来启用 禁用 wifi 和蓝牙 现在 我只能看到手机设置页面 我可以在其中手动更改启用 禁用 wifi 和蓝牙 那么 我怎样才能以编程方式做到这一点呢 Wi Fi 代码 ConnectionSettingsT
  • 使用 WinRT 接受无效的 SSL 证书

    在某些情况下 您希望应用程序接受无效的 SSL 证书 测试环境 自签名证书等 在 NET 世界中 人们会使用ServerCertificateValidationCallback类这样做 不幸的是 该类不存在于 WinRT 上下文中 我需要
  • 捏缩放列表框中绑定的图像

    我正在尝试在我的应用程序中实现捏缩放 我找到了这篇文章 Silverlight 中正确的捏合缩放 http www frenk com 2011 03 windows phone 7 correct pinch zoom in silver
  • 如何在 C#/XAML Windows 应用商店 (Metro UI) 应用程序中混合浅色和深色主题?

    根据 MSDN 设置应用程序主题的标准方法是设置RequestedTheme Dark or RequestedTheme Light 在顶层Application实例 这对于简单的应用程序非常有用 但很多时候我发现自己想要更改单个页面甚至
  • 在异步方法中显示错误消息的更好方法

    事实上我们不能使用await关键字在catch块使得在 WinRT 中显示来自异步方法的错误消息变得非常尴尬 因为MessageDialogAPI 是异步的 理想情况下我希望能够这样写 private async Task DoSometh
  • 每页上的进度条

    我需要一个进度条来显示在大多数 如果不是所有 页面上 有没有一个好方法可以轻松让进度条出现在所有页面上 我有一个基页面类 我的所有页面都继承自该基页面类 我正在考虑将进度条动态添加到基类中的每个页面 但不知道如何做到这一点 我可以让基本页面
  • 带有 ObservableCollection 和动态过滤器的 Silverlight ListBox

    假设我有这门课 public class MyData public bool IsActive get set public String Data1 get set public String Data2 get set and an
  • 有没有办法在 Windows 应用商店应用程序的 ApplicationSettings 中存储自己的类的实例?

    根据文档 在 Windows 应用商店应用程序中 我只能将 WinRT 类型存储在 ApplicationSettings 中 对于应该放在一起的漫游设置 我可以使用 ApplicationDataCompositeValue 尝试存储自己
  • wp7 芒果中的 DataTemplateSelector

    我的应用程序中需要一个数据模板选择器 我发现这个博客 http www windowsphonegeek com articles Implementing Windows Phone 7 DataTemplateSelector and
  • 按钮的样式看起来像应用栏按钮

    是否可以通过更改样式来将 xaml 按钮标记设置为看起来像应用程序栏按钮 以及如何才能做到这一点 希望这可以帮助
  • 使 DataTemplate 可混合

    如何为 ViewModel 制作可混合的数据模板 可在表达式混合中设计 当我转到资源并尝试直接编辑数据模板时 我在绘图板上看到的只是一个空白矩形 这是因为 DataTemplate 没有绑定到任何东西 当然 我可以创建一个 UserCont
  • 使用 ListPicker 和 DataBinding

    好的 我放弃 我想在我的 Windows Phone 应用程序之一中使用 ListPicker 控件 我遇到异常SelectedItem 必须始终设置为有效值 这是我的 ListPicker 的 XAML 部分
  • 黑屏只是闪烁一会儿

    在我的 Windows Phone 8 应用程序中 我有一个搜索页面 其中有一个文本框供用户输入搜索关键字 输入默认SIP键盘的 Enter 键时将调用搜索 搜索结果显示在另一个页面中 为了在导航到结果页面之前隐藏键盘 我使用 this F

随机推荐

  • 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