如何在 WPF 中放大图片

本文关键字:放大 WPF | 更新日期: 2023-09-27 18:36:53

我必须在WPF中放大一张图片。问题是操作后图片只显示一部分。

我必须让它逐渐扩大。我该怎么做?

如何在 WPF 中放大图片

我认为您将图像拉伸属性修改为none.

设置HeightWidth属性:

<Image
   Height="165"
   HorizontalAlignment="Left"
   Name="image1" Stretch="Fill"
   VerticalAlignment="Top"
   Width="339"
   Source="[your source]" />

[your source]中,您将放置图像的来源。

如果图像元素仅显示图片的一部分,则可以将 Stretch 属性更改为"均匀"(保留纵横比)或"填充"(不保留纵横比)。

可以使用 RenderTransform 属性的 ScaleTransform 来放大图片,

而不会影响应用程序的布局,也可以使用 LayoutTransform 属性的 ScaleTransform 来放大图片,从而使布局受到影响。ScaleTransform 提供了两个重要属性,即 ScaleX 和 ScaleY,它们分别影响图像在其 X 轴和 Y 轴上调整大小的方式。若要逐渐应用此效果,必须使用双动画。您没有指定何时要触发放大,因此出于示例的目的,我假设您希望在用户将鼠标悬停在图像上时放大图像。当用户鼠标离开图像时,提供的代码还会逐渐减小图像大小。若要更改大小增大和减小的时间,请更改两个事件触发器的 RoutedEvent 属性。

<Image Stretch="Uniform" Source="Penguins.jpg">
     <Image.RenderTransform>
          <ScaleTransform ScaleX="1" ScaleY="1" x:Name="scale" />
     </Image.RenderTransform>
     <Image.Triggers>
          <EventTrigger RoutedEvent="MouseEnter">
               <BeginStoryboard>
                    <Storyboard>
                         <DoubleAnimation Storyboard.TargetProperty="ScaleX"
                                          Storyboard.TargetName="scale" To="1.5"
                                          Duration="0:0:1" />
                         <DoubleAnimation Storyboard.TargetProperty="ScaleY"
                                          Storyboard.TargetName="scale" To="1.5"          
                                          Duration="0:0:1" />
                    </Storyboard>
               </BeginStoryboard>
          </EventTrigger>
          <EventTrigger RoutedEvent="MouseLeave">
               <BeginStoryboard>
                    <Storyboard>
                         <DoubleAnimation Storyboard.TargetProperty="ScaleX"
                                          Storyboard.TargetName="scale" To="1" 
                                          Duration="0:0:1" />
                         <DoubleAnimation Storyboard.TargetProperty="ScaleY"
                                          Storyboard.TargetName="scale" To="1" 
                                          Duration="0:0:1" />
                     </Storyboard>
               </BeginStoryboard>
          </EventTrigger>
     </Image.Triggers>
</Image>