wpf画矩形和划线时需要横向放大或者纵向放大,导致线宽不相等,如下图所示
1.矩形代码如下
<Rectangle Width="100" Height="100" Stroke="Black" Canvas.Top="20">
<Rectangle.RenderTransform>
<ScaleTransform ScaleX="3" ScaleY="1"/>
</Rectangle.RenderTransform>
</Rectangle>
效果图如下
2.折现代码如下
<Polyline Points="0 0 20 100 30 0 40 100 50 100 60 0" Stroke="Black" Canvas.Top="20">
<Polyline.RenderTransform>
<ScaleTransform ScaleX="3" ScaleY="1"/>
</Polyline.RenderTransform>
</Polyline>
效果图如下
3.使用path划线有2种方法
一种是StreamGeometry,另一种是PathFigureCollection
3.1 StreamGeometry 画法
<Path Data="M 0 0 20 100 30 0 40 100 50 100 60 0" Stroke="Black" Canvas.Top="20">
<Path.RenderTransform>
<ScaleTransform ScaleX="3" ScaleY="1"/>
</Path.RenderTransform>
</Path>
3.2 PathFigureCollection画法:
<Path Stroke="Black" Canvas.Top="40" >
<Path.Data>
<PathGeometry Figures="M 0 0 20 100 30 0 40 100 50 100 60 0" >
<PathGeometry.Transform>
<ScaleTransform ScaleX="3" ScaleY="2"></ScaleTransform>
</PathGeometry.Transform>
</PathGeometry>
</Path.Data>
</Path>
1.如果横向缩放和纵向缩放一定是相等的,那么可以采用在缩放的过程中,同时改变线宽, 使Scale * StrokeThickness = 固定值 就可以了
2.如果横向缩放和纵向缩放不相等就可以采用path的方法,而且必须是PathFigureCollection的画法
3.最笨的方法就是重新计算点,但性能必然降低
WPF
有五种基本变换,分别是RotateTransform:旋转变换、ScaleTransform:
缩
放
变换、SkewTransform:倾斜变换、TranslateTransform:移动变换、TransformGroup:变换组
WPF
图片的拖拽、移动和
缩
放
事件是比较常用的,主要是通过操作前端的TransformGroup实现图片常用事件,回调函数不影响主要功能
前端代码(.xmal / .xaml.cs)
// .xaml
<UserControl.Resources>
<conv:ImageConverter2 x:Key="imageConv"></conv:ImageConverter2>
<TransformGroup x:Name="tra
大可山 [MSN:a3news(AT)hotmail.com] http://www.zpxp.com 萝卜鼠在
线
图形图像处理--------------------------------------------------------------老规矩,看图说话。先看显示效果:(图1)XAML(代码A):http://schemas.microsoft.com/winfx/2006/xam
在
WPF
用户界面中,绘制2D图形内容的最简单方法是使用形状(shape)——专门用于表示简单的直
线
、椭圆、矩形以及多变形的一些类。从技术角度看,形状就是所谓的绘图图元(primitive)。可组合这些基本元素来创建更复杂的图形。
关于
WPF
中形状的重要细节是,它们都继承自FrameworkElement类。因此,形状是元素。这样会带来许多重要的结果:
形状绘制自身。不需要管理无效的...
WPF
的出现可谓是程序员们的福音,因为不但像阴影、发光这种简单效果可以使用一两个属性实现,就连通道、动态模糊这些高级的效果也可以轻松驾驭。同时设计师和程序员还可以像为Photoshop开发滤镜一样为
WPF
开发效果类库,届时只要把类库引用到项目中就可以使用其中的效果了。在UIElement类的成员中你可以找到BitmapEffect 和 Effect这两个属性,这两个属性都能用来为UI元素添加效果。你可能会问:为做同一件事准备了两个属性,难道不冲突吗?答案是:的确冲突。
01 Viewbox
Viewbox与border类似,可以接受一个子元素,并对子元素进行
缩
放
。Viewbox较多的应用场景是对形状进行
缩
放
处理,例如在Canvas面板中绘制了Ellipse椭圆,当Viewbox的size变化时,椭圆能够跟随变化。而绘制形状具有精确的坐标,即形状是具有固定的大小。如果没有Viewbox,形状的尺寸是不会跟随变化的。
左侧的圆形在Viewbox下,会随着窗体的大小变化而变化,而右侧在窗体变化时,并不会自动改变。由此可以看到,Viewbox在自身size变化时,会按照比例对子元