Расти круг по центру экрана
Я хочу, чтобы круг увеличивался от середины экрана до 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
1 ответ
Я вместо этого использовал обходной путь:
Я разместил эллипс в большом прозрачном окне, чтобы он мог выглядеть так, как если бы он рос из центра экрана. Однако, если вы перетаскиваете эллипс к верхней части экрана, он отталкивается вниз (потому что операционная система Windows всегда пытается поместить верхнюю часть невидимого окна на экран, а не обрезать его).
Чтобы преодолеть эту проблему, я использовал этот поток: Как мне переместить окно wpf в отрицательное верхнее значение?