WPF <ZoomableCanvas> 实现缩放移动
来源:互联网 发布:学编程要下载什么软件 编辑:程序博客网 时间:2024/06/05 16:50
熟悉WPF 的朋友应该知道Canvas 默认是不支持Scale 和Offset 操作的,如果我们想对Canvas 里包含的控件进行整体缩放或移动可能会比较麻烦。Kael Rowan 提供了ZoomableCanvas 类可以方便实现上述效果。我们可以在XAML 中直接使用<ZoomableCanvas> 对控件布局进行开发,而不需要使用<Canvas>。
通过两个Slider 控制Canvas 缩放大小与位移距离,ZoomableCanvas 的使用和Canvas 基本相同,可以在其中加入其他控件,最后只需要为Silder_ValueChanged 事件添加好内容即可。
在项目中加入ZoomableCanvas 相关类,编译后工具栏中会出现ZoomableCanvas 控件。
有了ZoomableCanvas 控件接下来的事情就简单多了,如下XAML 代码:
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://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(objectsender,RoutedPropertyChangedEventArgs<double> e){ zoomCanvas.Offset =newPoint(offsetVal.Value,0);
}
}
运行程序,通过滑块调整ZoomableCanvas 的Scale 与Offset 属性,快速实现多控件缩放与移动效果,如下图对比。
初始状态(调整前):
调整后:
示例下载
0 0
- WPF <ZoomableCanvas> 实现缩放移动
- WPF <ZoomableCanvas> 实现缩放移动
- WPF窗体缩放移动-实现代码
- 程序实现移动+缩放
- 配置文件实现移动+缩放
- UIIMageView 实现移动 缩放
- WPF图片预览之移动、旋转、缩放
- 使用WPF Resource以及Transform等技术实现鼠标控制图片缩放和移动的效果
- wpf实现图片拖动和缩放
- WPF Incanvas中墨迹的移动缩放 与复位
- WPF缩放
- android实现图片缩放、移动、单击退出、双击缩放
- 移动鼠标实现图片的缩放
- 运行期实现控件移动和缩放
- UIImageView实现图片的移动和缩放
- android实现手势缩放、移动图片
- Unity3d 简单实现物体旋转缩放移动
- [ios]scrollView实现移动与缩放
- Android 中的蓝牙模块
- 最新版Android NDK开发环境搭建以及第一个Android NDK程序(在eclipse中演示)(超简单实用)
- Linux 安装Nginx详细图解教程
- Dashgo D1概述
- sloth(标点工具)使用说明
- WPF <ZoomableCanvas> 实现缩放移动
- redis集群
- Jenkins+Maven+SVN快速搭建持续集成环境(转)
- 千变万化的viewpager
- MYSQL 与 Oracle 之间的数据类型转换
- detection/region/object prosoal方法综述文章
- 面试题汇总。
- ActionBarDrawerToggle的onOptionsItemSelected方法
- CentOS 7 时间同步