Inkcanvas 放大缩小变换

来源:互联网 发布:mac读取不了移动硬盘 编辑:程序博客网 时间:2024/05/22 17:20

1. ScrollViewer > Inkanvas布局实现显示滚动条

2. 笔迹 & 子控件 放大缩小转换

3. 布局放大缩小转换

4. RenderTransform vs LayoutTransform 前者不影响控件的RenderSize,后者影响


Xaml:

<Window    x:Class="WpfLogin.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="For you"    Width="600" Height="400"    >    <StackPanel>        <ScrollViewer Name="ScrollViewer_Test" Width="580" Height="300" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">        <InkCanvas Name="InkCanvas_Test">            <Image Width="200" Height="200" Source="F:\_tina\workspace\WpfLogin\WpfLogin\Images\video.png" HorizontalAlignment="Center" VerticalAlignment="Center"/>        </InkCanvas>        </ScrollViewer>        <Button Content="放大" Tag="increase" Click="Button_Click"/>        <Button Content="缩小" Tag="decrease" Click="Button_Click"/>    </StackPanel></Window >

Xaml.cs

    /// <summary>    /// MainWindow.xaml 的交互逻辑    /// </summary>    public partial class MainWindow:Window    {        public MainWindow()        {            InitializeComponent();        }        private void Button_Click(object sender, RoutedEventArgs e)        {            double scale;            Button button = sender as Button;            if (button.Tag.ToString().Equals("increase"))            {                scale = 1.25;            }            else            {                scale = 0.8;            }            //转换笔迹            //foreach (Stroke s in InkCanvas_Test.Strokes)            //{            //    Matrix myMatrix = new Matrix();            //    myMatrix.Scale(scale,scale);            //    s.Transform(myMatrix, false);            //}            if (InkCanvas_Test.LayoutTransform != null)            {                Point resultPoint;                InkCanvas_Test.LayoutTransform.TryTransform(new Point(1, 1), out resultPoint);                double originalScale = resultPoint.X / 1.0;                InkCanvas_Test.LayoutTransform = new ScaleTransform(originalScale * scale, originalScale * scale);            }            else            {                Transform transform = new ScaleTransform(scale, scale);                InkCanvas_Test.LayoutTransform = transform;            }    }    }




2 0
原创粉丝点击