在Windows手机上的滚动查看器中实现图像缩放
发布时间:2020-12-14 01:50:28 所属栏目:Windows 来源:网络整理
导读:我将图像控件放在滚动查看器中,就像tnis一样: ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Image Source="/Test/1.jpg" Width="320" Image.RenderTransform CompositeTransform ScaleX="{Binding Path=Value,El
我将图像控件放在滚动查看器中,就像tnis一样:
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" > <Image Source="/Test/1.jpg" Width="320"> <Image.RenderTransform> <CompositeTransform ScaleX="{Binding Path=Value,ElementName=slider}"/> </Image.RenderTransform> </Image> </ScrollViewer> 正如代码所示,我添加了一个滑块来控制图像的Compositetransform,但是当我改变滑块的值时,什么也没发生? 而且我还尝试在图像上附加缩放和平移行为(取决于工具包),不幸的是,我可以上下滚动,但我无法放大/缩小图像.似乎Scrollviewer阻止了捏合操纵. 我们知道,Scrollviewer控件在WPF中有一个“ZoomMode”属性,但在Windows Phone中已弃用.
xaml代码:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,12,0"> <ScrollViewer x:Name="scrl" Height="300" Width="300" BorderBrush="red" BorderThickness="2" VerticalScrollBarVisibility="Disabled"> <StackPanel> <Image x:Name="img" Source="Assets/Mountain.jpg" Height="100" Width="150" RenderTransformOrigin="0.5,0.5"> <Image.RenderTransform> <CompositeTransform x:Name="trans"/> </Image.RenderTransform> <toolkit:GestureService.GestureListener> <toolkit:GestureListener PinchStarted="GestureListener_PinchStarted" PinchDelta="GestureListener_PinchDelta" DragDelta="GestureListener_DragDelta"/> </toolkit:GestureService.GestureListener> </Image> </StackPanel> </ScrollViewer> </Grid> cs代码: double _initialAngle,_initialScale; public MainPage() { InitializeComponent(); scrl.ManipulationMode = ManipulationMode.Control; } private void GestureListener_PinchStarted(object sender,PinchStartedGestureEventArgs e) { _initialAngle = trans.Rotation; _initialScale = trans.ScaleX; } private void GestureListener_PinchDelta(object sender,PinchGestureEventArgs e) { trans.Rotation = _initialAngle + e.TotalAngleDelta; var curZoom = _initialScale * e.DistanceRatio; if (curZoom >= 1 && curZoom <= 3) { trans.ScaleX = _initialScale * e.DistanceRatio; trans.ScaleY = _initialScale * e.DistanceRatio; } } private void GestureListener_DragDelta(object sender,DragDeltaGestureEventArgs e) { trans.TranslateX += e.HorizontalChange; trans.TranslateY += e.VerticalChange; } 此代码适用于缩放,旋转和缩放. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何将Window从另一个应用程序嵌入到WPF窗口中作为用户控件
- .net – Windows XP上的DateTime.ToLocalTime
- windows-installer – 如何在Installshield 2018中添加发布
- 如何用act_window openerp打开不同的网站
- 将Uint8Array转换为JavaScript中的数组
- windows-7 – W7路由 – 流量不会进入默认网关
- microsoft-metro – 在ListView上收听click事件
- Windows服务的替代方案
- windows-server-2008 – 计算打印总数
- windows – 提取lazarus资源