想做一个在指定屏幕位置弹出窗口到最大化的动画效果,弹出是要不断的改变窗口的位置和窗口的高宽。
用wpf的动画效果动态改变窗体的宽度和高度,这样实现时发现显示弹出效果时不连贯,应该是改变窗口高宽时,内部的控件也随之变化而出现闪屏。
请问可以这样实现弹出效果吗?或者有什么别的办法实现弹出动画,谢谢!
想做一个在指定屏幕位置弹出窗口到最大化的动画效果,弹出是要不断的改变窗口的位置和窗口的高宽。
用wpf的动画效果动态改变窗体的宽度和高度,这样实现时发现显示弹出效果时不连贯,应该是改变窗口高宽时,内部的控件也随之变化而出现闪屏。
请问可以这样实现弹出效果吗?或者有什么别的办法实现弹出动画,谢谢!
那我们可以在更改窗口大小时,等比例的更改窗口中控件的大小吗?
当然可以啦!
这里我们用Viewbox控件,就可以实现这个功能啦!
第1步:我们只需要把所有的控件都放进Viewbox控件中。
第2步:然后,设置Viewbox的Stretch属性为UniformToFill
第3步:现在,我们缩放窗口时,窗口中的内容也会自动等比例进行缩放啦!
代码 (MainWindow.xaml):
<Window x:Class="ResizeTransparentWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ResizeTransparentWindow"
mc:Ignorable="d"
Title="MainWindow" Height="600" Width="800"
Background="Transparent"
AllowsTransparency="True"
WindowStyle="None">
<!--WindowChrome-->
<WindowChrome.WindowChrome>
<WindowChrome CaptionHeight="0" ResizeBorderThickness="20"/>
</WindowChrome.WindowChrome>
<!--Viewbox-->
<Viewbox Stretch="UniformToFill">
<!--内容(Content)-->
<Grid Width="800" Height="600">
<!--背景(Background)-->
<Border Margin="10" Background="White" CornerRadius="25">
<Border.Effect>
<DropShadowEffect Direction="0" ShadowDepth="0" BlurRadius="20"
Opacity="0.25" Color="#FF5B5B5B">
</DropShadowEffect>
</Border.Effect>
</Border>
<!--按钮(Button)-->
<Button Width="400" Height="200">
<TextBlock Width="400" Height="100" TextAlignment="Center"
FontSize="70" FontFamily="Source Han Sans CN Medium"
Text="Hello"/>
</Button>
</Grid>
</Viewbox>
</Window>