彩票走势图

利用ZoomableCanvas 控件实现缩放移动

转帖|其它|编辑:郝浩|2011-03-10 13:52:42.000|阅读 1800 次

概述:熟悉WPF 的朋友应该知道Canvas 默认是不支持Scale 和Offset 操作的,如果我们想对Canvas 里包含的控件进行整体缩放或移动可能会比较麻烦。Kael Rowan 提供了ZoomableCanvas 类可以方便实现上述效果。我们可以在XAML 中直接使用 对控件布局进行开发,而不需要使用

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

    熟悉WPF 的朋友应该知道Canvas 默认是不支持Scale 和Offset 操作的,如果我们想对Canvas 里包含的控件进行整体缩放或移动可能会比较麻烦。Kael Rowan 提供了ZoomableCanvas 类可以方便实现上述效果。我们可以在XAML 中直接使用<ZoomableCanvas> 对控件布局进行开发,而不需要使用<Canvas>。

  在项目中加入ZoomableCanvas 相关类,编译后工具栏中会出现ZoomableCanvas 控件。

  Control

  有了ZoomableCanvas 控件接下来的事情就简单多了,如下XAML 代码:

  <Window x:Class="WpfApplication1.MainWindow"
xmlns="//schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="//schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:System.Windows.Controls"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>

<StackPanel Orientation="Horizontal" Grid.Row="0">
<TextBlock Text="Scale"/>
<Slider Minimum=".1" Maximum="4" Width="200"
Value="{Binding ElementName=zoomCanvas, Path=Scale}"/>
</StackPanel>

<StackPanel Orientation="Horizontal" Grid.Row="1">
<TextBlock Text="Offset"/>
<Slider x:Name="offsetVal" Minimum="-300" Maximum="0" Width="200"
ValueChanged="Slider_ValueChanged"/>
</StackPanel>

<my:ZoomableCanvas x:Name="zoomCanvas" Grid.Row="2" Offset="-50,0">
<Button Content="Test" Canvas.Top="10" Canvas.Left="10"/>
<Rectangle Fill="Blue" Canvas.Top="30" Canvas.Left="50"
Width="50" Height="50"/>
</my:ZoomableCanvas>
</Grid>
</Window>

  通过两个Slider 控制Canvas 缩放大小与位移距离,ZoomableCanvas 的使用和Canvas 基本相同,可以在其中加入其他控件,最后只需要为Silder_ValueChanged 事件添加好内容即可。

private void Slider_ValueChanged

(object sender, RoutedPropertyChangedEventArgs<double> e)
{
zoomCanvas.Offset = new Point(offsetVal.Value,0);
}

  运行程序,通过滑块调整ZoomableCanvas 的Scale 与Offset 属性,快速实现多控件缩放与移动效果,如下图对比。

  初始状态(调整前):

  Normal 

  调整后:

  Changed

  


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP