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. 将H5页面的应用打包成APP(苹果和安卓版本)

    今天在清理手机上的应用时看到了“联名会员”这个“app”,我感觉只是个H5页面,不是一个原生的APP,但看起来和原生APP一模一样,心想,如果以后我开发了H5应用是不是可以把它搞成APP形式供别人下载 ...

  2. SpringMVC4集成ehcache

    前言 使用SpringMVC4集成ehcache来缓存服务器数据. 开发环境 SpringMVC4.ehcache2.6. 项目结构 SpringMVC 集成ehcache 1.pom.xml //除 ...

  3. python的类变量与实例变量以及__dict__属性

    关于Python的实例变量与类变量,先来看一段可能颠覆世界观的例子 #!/usr/bin/env python # -*- coding: utf_8 -*- # Date: 2016年10月10日 ...

  4. 利用shell显示wordcount功能

      Shell脚本编程是Linux系统最为核心的技术之一,它能够利用简单的命令来实现一些复杂的功能,同时,由于Linux提供了很多文本处理命令,如grep(grep family), tr, sed, ...

  5. 如何调试Javascript代码以及网页代码

    做过网页开发的都知道,不过你是用php还是asp.net以及java开发的网站,在开发过程中,web网页展示页面肯定会出现或多或少的问题.这里我推荐使用谷歌浏览器进行Web网页的调试以及错误信息定位. ...

  6. c# 后台拼接分页Html

    public static string ReplaceStr(string originalStr, string oldStr, string newStr) { if (string.IsNul ...

  7. sublime text3快速生成html头部信息

    1.在网站开发过程中尤其写前台页面时要写头部很麻烦,怎么办呢?直接生成不更好吗? 这是快速生成的信息 2.方法: ctrl+shift+P打开命令面板 点击安装控制器 3.输入emmet 安装(以下图 ...

  8. css的一些细节

    1.中文符号居中效果 对于动态输出文字可以不用在意,某些页面可能会有类似提示文案的地方,用英文标点符号,对于居中效果比较友好. 2.元素的上下间距 布局的时候从上往下开始写页面,一般都是写下一个的元素 ...

  9. Django Rest framework 之 节流

    RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...

  10. 【工具相关】web-HTML/CSS/JS Prettify的使用

    一,打开Sublime Text,代码如下面所示. 二,鼠标右键--->HTML/CSS/JS Prettify--->Prettify Code.代码如图所示,明显的代码变得整齐了.