以当前鼠标坐标的缩放和拖拽的方法,应用较多的有图像预览。
C#和WPF的框架比一些前端 或Java的UI框架,少了很多东西,作为开发者来说,社区生态的确非常重要。
网上关于WPF的资源不多,像基本的缩放和拖拽需要完全自己写代码。代码不复杂,为避免大家重复发明轮子,分享自己的代码给大家。
效果预览:
进入正题
1.前台代码:创建一个ContentControl(控件容器也行)包含一个Image控件。
ContentControl有三个事件,分别是:MouseWheel,MouseDown和MouseMove。
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Disabled" >
<ContentControl MouseWheel="ContentControl_MouseWheel" MouseDown="ContentControl_MouseDown" MouseUp="ContentControl_MouseUp" >
<Image Name="ImgCtl" Margin="-2,2,0,0" />
</ContentControl>
</ScrollViewer>
2. Image控件指定TransformGroup。
所有缩放和平移操作都应用于Image控件。TransformGroup能容纳各种变换。在初始化时它的Children添加了ScaleTransform和TranslateTransform,分别用于缩放和平移的变换。
public TransformGroup transGroup;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
transGroup.Children.Add(new ScaleTransform());
transGroup.Children.Add(new TranslateTransform());
ImgCtl.Rendertransform=transGroup;
}
3. 缩放操作
MouseWheel:监听用户的鼠标滚动事件,进行缩放操作。
private void ContentControl_MouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
Control ctl = sender as Control;
Syst