<Canvas Background="#CdfcAE"> <Rectangle Canvas.left="20" Canvas.top="80" WIDth="240" Height="136" RadiusX="15" RadiusY="15"> <Rectangle.Fill> <ImageBrush ImageSource="a1.png"></ImageBrush> </Rectangle.Fill> </Rectangle> <Image Source="b1.png" Canvas.left="320" Canvas.top="80"></Image></Canvas>运行后如下所示: 图片拉伸 当我们创建了一个图片的时候,如果不指定它的宽度和高度,它将会使用默认的规格来显示;如果指定了高和宽,图片将显示在指定高和宽的矩形区域内。可以通过苏醒Stretch来指定图片如何填充在该区域内,即图片拉伸。Stretch属性具有四个可选值: None:不对图片进行拉伸以便填充规定的尺寸。 Uniform:按比例进行拉伸,直到有一边满足规定的尺寸区域为止,其余部分不会被填充,按最小尺寸填充。 UniformToFill:按比例进行拉伸,直到完全填充规定的尺寸区域为止,超出该区域的将会被裁剪,按最大尺寸填充。 Fill:不按比例拉伸,完全填充规定的尺寸区域,将会破坏图像的比例。 Stretch默认的属性是Uniform,为了更直观的看到这个四个值的区别,下面看一个例子,我们使用一个规格尺寸为160*90图片,中间带一个小的正方形: 在页面上放置四个border控件,大小为220*220,并在其中各放置一个Image,图片的大小也定义为220*220,设置四个Image的Stretch属性分别为None、Uniform、UniformToFill、Fill,如下所示:
<Canvas Background="#CdfcAE"> <border borderBrush="Black" borderThickness="3" WIDth="220" Height="220" Canvas.left="40" Canvas.top="50"> <Image Source="a2.png" Stretch="None" WIDth="220" Height="220"></Image> </border> <border borderBrush="Black" borderThickness="3" WIDth="220" Height="220" Canvas.left="330" Canvas.top="50"> <Image Source="a2.png" Stretch="Uniform" WIDth="220" Height="220"></Image> </border> <border borderBrush="Black" borderThickness="3" WIDth="220" Height="220" Canvas.left="330" Canvas.top="330"> <Image Source="a2.png" Stretch="UniformToFill" WIDth="220" Height="220"></Image> </border> <border borderBrush="Black" borderThickness="3" WIDth="220" Height="220" Canvas.left="40" Canvas.top="330"> <Image Source="a2.png" Stretch="Fill" WIDth="220" Height="220"></Image> </border></Canvas>运行后可以很明显的看到这个四个值的区别,如下图所示: 裁剪图片 有时候我们只需要显示出图片的一部分,可以使用Clip属性对图片进行裁剪,在Clip属性中我们可以设置任意的几何图形,注意是Geometry而非前面讲过的Shape,关于Geometry后面会专门讲到。如下面的例子,裁剪出一个椭圆的区域:
<Canvas Background="#CdfcAE"> <Image Source="a1.png" Canvas.left="40" Canvas.top="80"></Image> <Image Source="a1.png" Canvas.left="320" Canvas.top="80"> <Image.Clip> <EllipseGeometry Center="120,68" RadiusX="100" RadiusY="60"> </EllipseGeometry> </Image.Clip> </Image></Canvas>运行后效果如下所示: 半透明遮罩 使用图片的OpacityMask属性,可以解释为通过用OpacityMask属性指定的画刷的Alpha通道值来遮掩图片的Alpha通道值,可以使用的画刷有linearGradIEntBrush,RadialGradIEntBrush和ImageBrush,而对于SolIDcolorBrush则可以直接通过Opacity属性实现。如下面的例子,我们对图片做一些渐变的效果:
<Canvas Background="#CdfcAE"> <Image Source="a1.png" Canvas.left="160" Canvas.top="80" Opacity="0.7"> <Image.OpacityMask> <linearGradIEntBrush StartPoint="0,0" EndPoint="1,0"> <GradIEntStop Offset="0.0" color="#00000000" /> <GradIEntStop Offset="1.0" color="#FF000000" /> </linearGradIEntBrush> </Image.OpacityMask> </Image></Canvas>运行后效果如下: 结束语 本文介绍了Silverlight中对于图片的处理,在后面我们还将利用这些知识做一个综合实例――实现图片的倒影效果。 总结
以上是内存溢出为你收集整理的一步一步学Silverlight 2系列(28):图片处理全部内容,希望文章能够帮你解决一步一步学Silverlight 2系列(28):图片处理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)