首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ScaleTransform in LayoutTransform不工作,但与RenderTransform一起工作

ScaleTransform in LayoutTransform不工作,但与RenderTransform一起工作
EN

Stack Overflow用户
提问于 2015-07-31 13:37:19
回答 1查看 3.7K关注 0票数 5

我试图在我的申请中做两件事。

1.缩放图像

能够使用RenderTransform。但是需要在LayoutTransform中实现以启用Scrollviewer

xaml

工作中。

代码语言:javascript
复制
 <Image.RenderTransform>
      <ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
 </Image.RenderTransform>

不工作

代码语言:javascript
复制
<Image.LayoutTransform>
     <ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
</Image.LayoutTransform>

2.旋转图像

ScaleTransformRenderTransform一起工作,但需要与ScaleTransform一起获得ScrollViewer

ScaleTransformLayoutTransform中的问题

代码语言:javascript
复制
<Image.LayoutTransform>
    <TransformGroup> 
       <ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
       <RotateTransform Angle="{Binding RotateAngle}"/>
    </TransformGroup>
</Image.LayoutTransform>

不能同时用ScaleTransformRotateTransform实现ScrollViewer

我和Canvas试过了

xaml

代码语言:javascript
复制
<Canvas.LayoutTransform>
   <TransformGroup> 
      <ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
      <RotateTransform Angle="{Binding RotateAngle}"/>
   </TransformGroup>
</Canvas.LayoutTransform>

不同的旋转行为,但能够实现两种功能工作,但ScrollViewer不滚动。

帆布旋转行为

-

试着用ViewBox做同样的事情

ScrollViewer缩放不起作用。

以下是完整代码

代码语言:javascript
复制
<ScrollViewer>
    <Viewbox  RenderTransformOrigin="0.5,0.5" Height="Auto" Width="Auto" ScrollViewer.CanContentScroll="True">
         <Viewbox.LayoutTransform>
                <TransformGroup> 
                    <ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
                    <RotateTransform Angle="{Binding RotateAngle}"/>
                </TransformGroup>
            </Viewbox.LayoutTransform>
        <Image RenderTransformOrigin="0.5,0.5" >               
            <Image.Source>                    
                <BitmapImage UriSource="{Binding ImagePath}" ScrollViewer.CanContentScroll="True"></BitmapImage>
            </Image.Source>
        </Image>
    </Viewbox>
 </ScrollViewer>

任何人都可以帮我提建议。

“GazTheDestroyer”为我建议的有效解决方案

XAML

代码语言:javascript
复制
<Image RenderTransformOrigin="0.5,0.5" Stretch="None" >
            <Image.LayoutTransform>
                <TransformGroup>
                  <ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
                  <RotateTransform Angle="{Binding RotateAngle}"/>
               </TransformGroup>
           </Image.LayoutTransform>
         <Image.Source>                    
           <BitmapImage UriSource="{Binding ImagePath}" ScrollViewer.CanContentScroll="True"></BitmapImage>
         </Image.Source>
 </Image>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-31 14:54:42

尝试将Stretch="None"添加到Image标记中,否则就会提供显式的高度和宽度。

在某些面板中,WPF将自动将图像扩展到面板中的可用空间,这将使您的缩放转换成为布局过程的一部分时的冗余。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31747574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档