ms-word做出的效果令人十分欣喜,那么如何用wpf达到这个效果,下面我们来进行讨论。

界面上我用一个WrapPanel作为父级控件,动态添加InkCanvas作为子控件

    <Grid>
<Grid.RowDefinitions>
<RowDefinition Name="disRow"/>
<RowDefinition Height=""/>
</Grid.RowDefinitions> <Slider x:Name="slider" Grid.Row="" HorizontalAlignment="Right" Width=""
Margin="10,0,100,0" VerticalAlignment="Top" TickFrequency="0.2"
TickPlacement="BottomRight" Cursor="Hand" IsSnapToTickEnabled="True"
Value="0.6" Maximum="" LargeChange="0.1" Template="{StaticResource tmp}" ValueChanged="slider_ValueChanged_1"/> <TextBlock x:Name="textBlock" Grid.Row="" Width=""
HorizontalAlignment="Right" Margin="0,0,10,0"
FontFamily="宋体" FontSize="" FontWeight="Light"
TextWrapping="Wrap" VerticalAlignment="Top">
<TextBlock.Text>
<Binding Path="Value" ElementName = "slider" StringFormat="{}{0:P1}"/>
</TextBlock.Text>
</TextBlock> <ScrollViewer x:Name="scr" Margin="" VerticalScrollBarVisibility="Auto">
<WrapPanel Name="parent" Grid.Row="" Width="{Binding Path=Width,ElementName=disRow}"
Height="{Binding Path=Height,ElementName=disRow}"
HorizontalAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Top"/>
</ScrollViewer>
</Grid>

后台添加:

  double SH;
double SW;
const int A4_H = ;
const int A4_W = ;
static double rate; public MainWindow()
{
InitializeComponent();
//SH = SystemParameters.PrimaryScreenHeight; //实际宽高
//SW = SystemParameters.PrimaryScreenWidth; SW = SystemParameters.WorkArea.Width; //工作区
SH = SystemParameters.WorkArea.Height; rate = SH / A4_H;
} private void test_Loaded(object sender, RoutedEventArgs e)
{
parent.Width = A4_W * rate;
for (int i=; i<; i++)
{
InkCanvas temp = new InkCanvas();
temp.Width = A4_W*rate;
temp.Height = A4_H * rate; temp.Background= new SolidColorBrush(Color.FromArgb(0xFF, 0xF1, 0xE2, 0x9E));
temp.Margin = new Thickness(,,,);
parent.Children.Add(temp);
}
}

ValueChange的代码:

  private void slider_ValueChanged_1(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (e.NewValue == e.OldValue||(e.OldValue==&&e.NewValue!=0.2))
{
return;
} switch (e.NewValue.ToString())
{
case "":
parent.Width = A4_W * rate * + ;
foreach (InkCanvas c in parent.Children)
{
c.Width = A4_W * rate / ;
c.Height = A4_H * rate / ;
}
break;
case "0.2":
parent.Width = A4_W * rate * + ;
foreach (InkCanvas c in parent.Children)
{
c.Width = A4_W * rate/;
c.Height = A4_H * rate / ;
}
break;
case "0.3":
break;
case "0.4":
parent.Width = A4_W * rate * +;
foreach (InkCanvas c in parent.Children)
{
c.Width = A4_W * rate;
c.Height = A4_H * rate;
}
break;
case "0.5":
break;
case "0.6":
parent.Width = A4_W * rate;
foreach (InkCanvas c in parent.Children)
{
c.Width = A4_W * rate;
c.Height = A4_H * rate;
}
break;
case "0.7":
break;
case "0.8":
parent.Width = A4_W * rate * 1.5;
foreach (InkCanvas c in parent.Children)
{
c.Width= A4_W * rate * 1.5;
c.Height = A4_H * rate*1.5;
}
break;
case "0.9":
parent.Width = A4_W * rate * ;
foreach (InkCanvas c in parent.Children)
{
c.Width = A4_W * rate * ;
c.Height = A4_H * rate*;
}
break;
case "":
parent.Width = A4_W * rate * 2.5;
foreach (InkCanvas c in parent.Children)
{
c.Width = A4_W * rate * 2.5;
c.Height = A4_H * rate*2.5;
}
break; }
}

实现的效果:

WPFの实现word的缩放效果的更多相关文章

  1. WPF中的平移缩放和矩阵变换(TranslateTransform、ScaleTransform、MatrixTransform)

    在WPF中的平移缩放都是通过RenderTransform这个类来实现这些效果的,在这个类中,除了平移和缩放还有旋转.扭曲变换.矩阵变换.这些都差不多的,都是坐标的变换. 这里我就先简单弄个平移和缩放 ...

  2. Android 四种简单的动画(淡入淡出、旋转、移动、缩放效果)

    最近在Android开发当中,用到的动画效果. public void onClick(View arg0) { // TODO 自动生成的方法存根 switch (arg0.getId()) { c ...

  3. WPF Multi-Touch 开发:惯性效果(Inertia)

    原文 WPF Multi-Touch 开发:惯性效果(Inertia) 从上一篇实例可以发现在图片移动过程中如果将手指移开屏幕则图片会立刻停止,根据这种情况WPF 提供另外一种惯性效果(Inertia ...

  4. WPF 图片浏览 伪3D效果

    原文:WPF 图片浏览 伪3D效果 首先上效果图: 因项目要求,需要把图片以"好看"."炫"的效果展示出来,特地研究了一下WPF关于3D方面的制作,奈何最终成果 ...

  5. Egret 按钮点击缩放效果

    非代码设计,exml直接操作 设计模式下选中对象,之后[源码],会直接定位到该对象在exml源码中的位置 width.down = "100%" 表示当按钮按下的时候宽度为 100 ...

  6. 【WPF】两则动画效果

    原文:[WPF]两则动画效果 引言 利用WPF的动画可以轻而易举的实现各种各样的特效,如擦除,滑动进入等,先看两个效果图 第一个效果 这个动画其实利用了OpacityMask和LinearGradie ...

  7. Cocos2dx 小技巧(十四)ScrollView实现缩放效果

    这阶段心绪比較乱,所以这篇开头就不扯淡了.(谁说大姨夫来了我跟谁急!~~)说到大姨夫我突然想到英雄联盟有个美女讲解叫伊芙蕾亚,她的堂弟ID居然叫:姨夫累呀,好笑吧(呵呵,有点冷~~额,我都说不扯淡了) ...

  8. 《JavaScript 实战》:JavaScript 实现拖拽缩放效果

    拖拉缩放效果,实现通过鼠标拖动来调整层的面积(宽高)大小,例如选框效果.这里的拖拉缩放比一般的选框复杂一点,能设置八个方位(方向)的固定触发点,能设置最小范围,最大范围和比例缩放. 跟拖放效果一样,程 ...

  9. 用WPF轻松打造iTunes CoverFlow效果

    原文:用WPF轻松打造iTunes CoverFlow效果 用WPF轻松打造iTunes CoverFlow效果                                             ...

随机推荐

  1. jQuery validate and groups - how to avoid errorPlacement usage?

    本文参照:https://stackoverflow.com/questions/14146893/using-groups-with-jquery-form-validation-how 指定错误提 ...

  2. VS中C#的快捷键

    Ctrl+E,D: 格式化全部代码 Ctrl+E,C / Ctrl+K,C: 注释选定内容 Ctrl+E,U / Ctrl+K,U: 取消选定注释内容 Ctrl+E,S: 查看空白 Ctrl+E,W: ...

  3. MVC HtmlHelper用法

    HtmlHelper用来在视图中呈现 HTML 控件. 以下列表显示了当前可用的一些 HTML 帮助器. 本主题演示所列出的带有星号 (*) 的帮助器. ActionLink - Links to a ...

  4. 【Dubbo&&Zookeeper】6、 给dubbo接口添加白名单——dubbo Filter的使用

    在开发中,有时候需要限制访问的权限,白名单就是一种方法.对于Java Web应用,Spring的拦截器可以拦截Web接口的调用:而对于dubbo接口,Spring的拦截器就不管用了. dubbo提供了 ...

  5. [转*译]Networking API Improvements in Windows 10

        在当今,以云优先,移动优先技术为宗旨的时代下,大多数Apps都至少有一些与web服务或网络上其他设备的集成.这些包括应用程序,它获取天气在线内容,新闻或体育比赛的分数,媒体或下载的播客,甚至对 ...

  6. Android ThreadPoolExecutor线程池

    引言 Android的线程池概念来自于Java的Executor,真正的线程池实现为ThreadPoolExecutor.在Android中,提供了4类不同的线程池,具体下面会说到.为什么使用线程池呢 ...

  7. netty 基础

    Netty是一个高性能.异步事件驱动的NIO框架,提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户 ...

  8. HDU6205

    card card card Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  9. blfs(systemv版本)学习笔记-编译安装配置dhcpcd

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! dhcpcd项目地址:http://www.linuxfromscratch.org/blfs/view/8.3/basicne ...

  10. Django&Flask区别

    Flask Flask 本身只有一个内核,几乎所有的功能都需要用第三方的扩展来实现. Flask 没有默认使用的数据库,默认依赖两个外部库:Jinja2 模板引擎和 WSGI 工具箱(采用的时 Wer ...