【发布时间】:2013-09-08 05:51:53
【问题描述】:
我想要一个从屏幕中间到直径约 500 像素的圆圈。我将让这个圆圈作为我的应用程序的窗口(因此用户将像普通窗口一样拖动它)。
到目前为止,我可以让圆圈在启动时的动画中从 0 的高度和宽度增长到 500。它所在的窗口设置为透明且 SizeToContent ="WidthAndHeight"。这很好,因为包含窗口拥抱了圆圈,但这样圆圈不再从屏幕中心开始增长,而是从中心开始向右侧和底部增长。
如何让圆在具有 SizeToContent="WidthAndHeight" 的同时从中心变大?
到目前为止,这是我的代码:
XAML
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
WindowStyle="None"
AllowsTransparency="True"
Background="Transparent"
WindowStartupLocation="CenterScreen"
SizeToContent="WidthAndHeight">
<Window.Resources>
<Storyboard x:Key="EllipseExpand">
<DoubleAnimation From="0" To="500" Duration="0:0:5"
Storyboard.TargetName="MyCircle"
Storyboard.TargetProperty="Width"/>
<DoubleAnimation From="0" To="500" Duration="0:0:5"
Storyboard.TargetName="MyCircle"
Storyboard.TargetProperty="Height"/>
</Storyboard>
</Window.Resources>
<Ellipse Name="MyCircle" Fill="Red" Height="0" Width="0"/>
</Window>
背后的代码
Imports System.Windows.Media.Animation
Class MainWindow
Public Sub WindowLoaded() Handles Me.Loaded
Dim ellipseExpand As Storyboard = FindResource("EllipseExpand")
ellipseExpand.Begin()
End Sub
End Class
【问题讨论】:
-
我认为,除非您的窗口稍后需要调整大小,否则将椭圆放在窗口的中心并为其位置设置动画会更容易。
-
Athari- 如果窗口是固定宽度,那么它会在椭圆增长时切断椭圆。如果它足够大以容纳整个椭圆,那么稍后如果椭圆缩小,用户将无法拖动椭圆(因为不可见窗口的顶部需要留在屏幕上,所以椭圆不能走靠近屏幕顶部)
标签: wpf vb.net animation storyboard sizetocontent