博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF Effect Clip以及Transform
阅读量:6365 次
发布时间:2019-06-23

本文共 1618 字,大约阅读时间需要 5 分钟。

在UIElement类的成员中可以找到BitmapEffect和Effect两个属性,这两个属性都用来为UI元素添加效果,MS的官方网站和一些开源网站上已经有很多效果类库可以使用。Effect由于GPU加速,所以性能较好,可以说是Effect代替了BitmapEffect,不过在WPF4.0中BitmapEffect仍然可以使用。

Effect的可选值如下:

BitmapEffect的可选属性如下:

WPF中Transform一词含义很广,位置、尺寸、坐标系比例、旋转角度等的变化都算变形。

WPF中的变形与UI元素是分开的,举个例子,可以设计一个“向左选作45度”的变形,然后把这个变形赋值给不同的UI元素的变形控制属性,这些UI元素就都向左旋转45度了。

控制变形的属性有两个,分别是:

RenderTransform:呈现变形,定义在UIElement类中。

LayoutTransform:布局变形,定义在FrameworkElement类中。

这两个属性都是依赖属性,他们的数据类型都是Transform抽象类,Transform类的派生类均可用来为这两个属性赋值。

   

Transform类的派生类有如下一些:

  • MatrixTransform:矩阵变形,把容纳被变形UI元素的矩阵点看做一个矩阵进行变形。
  • RouteTransform:旋转变形,以给定的点位旋转中心,以角度为单位进行旋转。
  • ScaleTransform:坐标系变形,调整被变形元素的坐标系,可以产生缩放效果。
  • SkewTransform:拉伸变形,可以在横向和纵向上对变形元素进行拉伸。
  • TranslateTransform:偏移变形,使被变形元素在横向或纵向上偏移一个给定的值。
  • TransformGroup:变形组,可以把多个独立变形合成一个变形组、产生复合变形效果。

在工作中经常会遇到制作不规则窗体或控件的需求,WPF在这方面做了很好的支持,仅需使用窗体或控件的Clip属性就可以轻松做到。

Clip属性被定义在UIElement中,一次WPF窗体和所有控件、图形都具有这个属性。Clip属性的数据类型是Geometry,与Path的Data属性一致。因此,我们只要按照需求只做好特殊形状的Path并把Path的Data属性赋值给窗体或控件的Clip属性,对目标的裁剪就完成了。

在XAML中定义一个Path,如下:

赋值:

window1.Clip = clipPath.Data;

就OK了,注意对于窗体需要设置这两个属性:

AllowsTransparency="True" WindowStyle="None"

效果如下:

 下面让这个窗体支持拖动,仅需要重写OnMouseLeftButtonDown,如下:

protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e){   base.OnMouseLeftButtonDown(e);   //Point position = e.GetPosition(window1);   if (e.LeftButton == MouseButtonState.Pressed)   {      this.DragMove();   }}

这样窗体就可以自由拖动了。

 

转载地址:http://rjama.baihongyu.com/

你可能感兴趣的文章
有了这个课件制作工具,还怕备课有难题?
查看>>
jquery之clone()方法详解
查看>>
Delphi 用文件流读取文本文件字符串的方法
查看>>
php中怎么导入自己写的类
查看>>
C# 委托
查看>>
Using Information Fragments to Answer the Questions Developers Ask
查看>>
JVM学习(4)——全面总结Java的GC算法和回收机制---转载自http://www.cnblogs.com/kubixuesheng/p/5208647.html...
查看>>
getParameter和getAttribute的区别
查看>>
自动工作负载库理论与操作(Automatic Workload Repository,AWR)
查看>>
Redis两种方式实现限流
查看>>
CentOS 7 中使用NTP进行时间同步
查看>>
在MongoDB数据库中查询数据(上)
查看>>
Python import其他文件夹的文件
查看>>
Jvm(22),回收策略-----标记清除算法
查看>>
MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?
查看>>
UNIX 高手的 10 个习惯
查看>>
传值与传引用
查看>>
HDU 1538 A Puzzle for Pirates(海盗分金问题)
查看>>
C# Web Forms - Using jQuery FullCalendar
查看>>
H5移动端知识点总结
查看>>