【问题标题】:Grow a circle on the center of the screen在屏幕中心长出一个圆圈
【发布时间】: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


【解决方案1】:

我改用了一种解决方法:

我将椭圆放置在一个大的透明窗口中,这样它看起来就好像它是从屏幕中心长出来的一样。但是,如果您将椭圆拖到屏幕顶部,它会被向下推(因为 Windows 操作系统总是试图将不可见窗口的顶部放入屏幕而不是剪裁它)。

为了解决这个问题,我使用了这个线程: How do I move a wpf window into a negative top value?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    相关资源
    最近更新 更多