Silverlight 椭圆高度变换

发布于 2024-12-05 17:26:24 字数 2491 浏览 6 评论 0原文

我正在学习 Silverlight for WP7 并遇到一个小问题: 我想将高度转换为 1,然后围绕中心转换回来(这样看起来就像旋转)(它会自动执行宽度转换)。 代码:

<StackPanel x:Name="ContentPanel" Grid.Row="2" VerticalAlignment="Bottom">
    <StackPanel.Resources>
        <Storyboard x:Name="UpDownStoryBoard">
            <DoubleAnimation Storyboard.TargetName="FirstEllipse"
                Storyboard.TargetProperty="Height"
                To="1" AutoReverse="True"
                Duration="00:00:02" />
        </Storyboard>
        <Storyboard x:Name="LeftRightStoryBoard">
            <DoubleAnimation Storyboard.TargetName="FirstEllipse"
        Storyboard.TargetProperty="Width"
        To="1" AutoReverse="True"
        Duration="00:00:02" />
        </Storyboard>
    </StackPanel.Resources>
    <Border VerticalAlignment="Top">
        <Ellipse x:Name="FirstEllipse" Fill="Aqua"  Height="150" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Border>
    <Grid x:Name="ContentGrid" HorizontalAlignment="Center" VerticalAlignment="Center" Width="438">
                <Grid.RowDefinitions>
                    <RowDefinition Height="33*" />
                    <RowDefinition Height="33*" />
                    <RowDefinition Height="33*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="33*" />
                    <ColumnDefinition Width="33*" />
                    <ColumnDefinition Width="33*" />
                </Grid.ColumnDefinitions>
                <Button Content="&lt;" Height="80" HorizontalAlignment="Center" Name="_lButton" VerticalAlignment="Center" Width="80" Grid.Row="1" Click="StartLeftRightStoryBoard" />
                <Button Content="&gt;" Height="80" HorizontalAlignment="Center" Name="_rButton" VerticalAlignment="Center" Width="80" Grid.Column="2" Grid.Row="1" Click="StartLeftRightStoryBoard" />
                <Button Content="^" Height="80" HorizontalAlignment="Center"  VerticalAlignment="Center" Name="_uButton" Width="80" Grid.Column="1" Click="StartUpDownStoryBoard" />
                <Button Content="v" Height="80" HorizontalAlignment="Center" VerticalAlignment="Center"  Name="_dButton" Width="80" Grid.Column="1" Grid.Row="2" Click="StartUpDownStoryBoard" />
            </Grid>
</StackPanel>

I'm learning Silverlight for WP7 and have come across a slight problem:
I want to transform the height to 1 and back (so it looks like spinning) around the center (it does it automatically for width).
Code:

<StackPanel x:Name="ContentPanel" Grid.Row="2" VerticalAlignment="Bottom">
    <StackPanel.Resources>
        <Storyboard x:Name="UpDownStoryBoard">
            <DoubleAnimation Storyboard.TargetName="FirstEllipse"
                Storyboard.TargetProperty="Height"
                To="1" AutoReverse="True"
                Duration="00:00:02" />
        </Storyboard>
        <Storyboard x:Name="LeftRightStoryBoard">
            <DoubleAnimation Storyboard.TargetName="FirstEllipse"
        Storyboard.TargetProperty="Width"
        To="1" AutoReverse="True"
        Duration="00:00:02" />
        </Storyboard>
    </StackPanel.Resources>
    <Border VerticalAlignment="Top">
        <Ellipse x:Name="FirstEllipse" Fill="Aqua"  Height="150" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Border>
    <Grid x:Name="ContentGrid" HorizontalAlignment="Center" VerticalAlignment="Center" Width="438">
                <Grid.RowDefinitions>
                    <RowDefinition Height="33*" />
                    <RowDefinition Height="33*" />
                    <RowDefinition Height="33*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="33*" />
                    <ColumnDefinition Width="33*" />
                    <ColumnDefinition Width="33*" />
                </Grid.ColumnDefinitions>
                <Button Content="<" Height="80" HorizontalAlignment="Center" Name="_lButton" VerticalAlignment="Center" Width="80" Grid.Row="1" Click="StartLeftRightStoryBoard" />
                <Button Content=">" Height="80" HorizontalAlignment="Center" Name="_rButton" VerticalAlignment="Center" Width="80" Grid.Column="2" Grid.Row="1" Click="StartLeftRightStoryBoard" />
                <Button Content="^" Height="80" HorizontalAlignment="Center"  VerticalAlignment="Center" Name="_uButton" Width="80" Grid.Column="1" Click="StartUpDownStoryBoard" />
                <Button Content="v" Height="80" HorizontalAlignment="Center" VerticalAlignment="Center"  Name="_dButton" Width="80" Grid.Column="1" Grid.Row="2" Click="StartUpDownStoryBoard" />
            </Grid>
</StackPanel>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

虫児飞 2024-12-12 17:26:24

是因为容器---Border元素。
Border位于StackPanel中,其高度由子元素决定。
因此,当椭圆的高度降低时,边框的高度也会降低。

解决办法很简单,给Border一个固定的Height。

例如

<Border VerticalAlignment="Top" Height="400" Width="400">
      <Ellipse x:Name="FirstEllipse" Fill="Aqua"  Height="150" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>

希望这有帮助。

It's because of the container --- Border element.
The Border is in a StackPanel, and its Height is decided by the child element.
So when the ellipse's height goes down, the Height of the Border goes down too.

Solution is simple, give the Border a fixed Height.

e.g.

<Border VerticalAlignment="Top" Height="400" Width="400">
      <Ellipse x:Name="FirstEllipse" Fill="Aqua"  Height="150" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>

Hope this helps.

逆光下的微笑 2024-12-12 17:26:24

也许这就是你想要的。

<Grid x:Name="ContentPanel">
        <Grid.Resources>
            <Storyboard x:Name="UpDownStoryBoard">
                <DoubleAnimation Storyboard.TargetName="FirstEllipse"
                Storyboard.TargetProperty="Height"
                To="1" AutoReverse="True"
                Duration="00:00:02" />
            </Storyboard>
            <Storyboard x:Name="LeftRightStoryBoard">
                <DoubleAnimation Storyboard.TargetName="FirstEllipse"
        Storyboard.TargetProperty="Width"
        To="1" AutoReverse="True"
        Duration="00:00:02" />
            </Storyboard>
        </Grid.Resources>

        <Grid.RowDefinitions>
            <RowDefinition Height="0.5*" />
            <RowDefinition Height="0.5*" />
        </Grid.RowDefinitions>

        <Border>
            <Ellipse x:Name="FirstEllipse" Fill="Aqua"  Height="150" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Border>
        <Grid Grid.Row="1" x:Name="ContentGrid" HorizontalAlignment="Center" VerticalAlignment="Center" Width="438">
            <Grid.RowDefinitions>
                <RowDefinition Height="33*" />
                <RowDefinition Height="33*" />
                <RowDefinition Height="33*" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="33*" />
                <ColumnDefinition Width="33*" />
                <ColumnDefinition Width="33*" />
            </Grid.ColumnDefinitions>
            <Button Content="<" Height="80" HorizontalAlignment="Center" Name="_lButton" VerticalAlignment="Center" Width="80" Grid.Row="1" Click="StartLeftRightStoryBoard" />
            <Button Content=">" Height="80" HorizontalAlignment="Center" Name="_rButton" VerticalAlignment="Center" Width="80" Grid.Column="2" Grid.Row="1" Click="StartLeftRightStoryBoard" />
            <Button Content="^" Height="80" HorizontalAlignment="Center"  VerticalAlignment="Center" Name="_uButton" Width="80" Grid.Column="1" Click="StartUpDownStoryBoard" />
            <Button Content="v" Height="80" HorizontalAlignment="Center" VerticalAlignment="Center"  Name="_dButton" Width="80" Grid.Column="1" Grid.Row="2" Click="StartUpDownStoryBoard" />
        </Grid>
    </Grid>

Maybe this is what you want.

<Grid x:Name="ContentPanel">
        <Grid.Resources>
            <Storyboard x:Name="UpDownStoryBoard">
                <DoubleAnimation Storyboard.TargetName="FirstEllipse"
                Storyboard.TargetProperty="Height"
                To="1" AutoReverse="True"
                Duration="00:00:02" />
            </Storyboard>
            <Storyboard x:Name="LeftRightStoryBoard">
                <DoubleAnimation Storyboard.TargetName="FirstEllipse"
        Storyboard.TargetProperty="Width"
        To="1" AutoReverse="True"
        Duration="00:00:02" />
            </Storyboard>
        </Grid.Resources>

        <Grid.RowDefinitions>
            <RowDefinition Height="0.5*" />
            <RowDefinition Height="0.5*" />
        </Grid.RowDefinitions>

        <Border>
            <Ellipse x:Name="FirstEllipse" Fill="Aqua"  Height="150" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Border>
        <Grid Grid.Row="1" x:Name="ContentGrid" HorizontalAlignment="Center" VerticalAlignment="Center" Width="438">
            <Grid.RowDefinitions>
                <RowDefinition Height="33*" />
                <RowDefinition Height="33*" />
                <RowDefinition Height="33*" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="33*" />
                <ColumnDefinition Width="33*" />
                <ColumnDefinition Width="33*" />
            </Grid.ColumnDefinitions>
            <Button Content="<" Height="80" HorizontalAlignment="Center" Name="_lButton" VerticalAlignment="Center" Width="80" Grid.Row="1" Click="StartLeftRightStoryBoard" />
            <Button Content=">" Height="80" HorizontalAlignment="Center" Name="_rButton" VerticalAlignment="Center" Width="80" Grid.Column="2" Grid.Row="1" Click="StartLeftRightStoryBoard" />
            <Button Content="^" Height="80" HorizontalAlignment="Center"  VerticalAlignment="Center" Name="_uButton" Width="80" Grid.Column="1" Click="StartUpDownStoryBoard" />
            <Button Content="v" Height="80" HorizontalAlignment="Center" VerticalAlignment="Center"  Name="_dButton" Width="80" Grid.Column="1" Grid.Row="2" Click="StartUpDownStoryBoard" />
        </Grid>
    </Grid>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文