图形---图像处理

创建图像

为了呈现图像,您可以使用 ImageImageBrush 对象

<Image Source="myPicture.png" />
Image myImage = new Image();
myImage.Source
= new BitmapImage(new Uri("myPicture.jpg", UriKind.RelativeOrAbsolute));
LayoutRoot.Children.Add(myImage);

您可以直接设置 Source,也可以通过以下 URL 方案之一设置:

  • 绝对 URL,例如,http://contoso.com/myPicture.jpg

  • 相对于引用 XAML 文件。在这种情况下,指定不带前导斜杠的相对 URL。例如,Source="myPicture.png" 指定了在程序集中嵌入的与 XAML 文件位于相同文件夹位置的图像文件。还可以在目录结构中向上遍历,只要可以在 XAP 结构中解析路径。例如,Source="../resources/myPicture.png" 指定了来自 Resources 文件夹的图像文件,该文件夹与 XAP 找到其 XAML 文件组件的文件夹位置同级。

  • 相对于 XAP 文件应用程序根。在这种情况下,指定带有前导斜杠的相对 URL,该 URL 从 XAP 结构根处开始路径解析。例如,Source="/resources/myPicture.png" 指定了来自在 XAP 结构中定义的根级 resources 目录的源。推荐用此方法取代以前的相对 URL 方法,因为对 XAML 文件的 XAP 位置的更改(例如将 XAML 从页定义移入资源字典)不会中断相对于 XAP 结构根的引用。此方法通常用于作为 Content 生成操作放入 XAP 的图像源。

  • 指定一个程序集,然后通过引用 component; 标记在其概念根位置输入程序集结构。这是最为可靠的 URL 指定方式,因为即便您在程序集之外完全重构 XAML(例如,如果您将此部分 XAML 移入某个附属程序集以进行本地化),以这种方式仍可解析为图像目标。例如,Source="MySilverlightApp;component/myPicture.png" 引用了应该作为下载程序集提供的程序集 MySilverlightApp。您指定的程序集可以是 XAP 中的主应用程序程序集,换言之,即 Silverlight 项目输出路径声明的同一程序集名称。不要在此 URI 方案中指定 .dll 扩展名后缀。

裁切图像

可以通过使用 Clip 属性裁切掉图像输出的某个区域来裁切图像

<Grid x:Name="LayoutRoot" Background="White">
<Image Source="Water_lilies.jpg"
Width
="200" Height="150">
<Image.Clip>
<EllipseGeometry RadiusX="100" RadiusY="75" Center="100,75"/>
</Image.Clip>
</Image>
</Grid>

应用 OpacityMask

您可以将 OpacityMask 应用于某一图像,以便创建多种与不透明度相关的照片蒙板技术,例如虚光照效果

下面的 XAML 示例在图像上放置一个居中的椭圆屏蔽,这样,图像将使用径向梯度在椭圆边缘淡出到为零的不透明度。

<Image Source="sampleImages/forest.jpg" Height="100">
<Image.OpacityMask>
<RadialGradientBrush Center="50,50" GradientOrigin="50,50" MappingMode="Absolute" RadiusX="90" RadiusY="50">
<GradientStop Color="#00000000" Offset="25" />
<GradientStop Color="#20000000" Offset="12" />
<GradientStop Color="#FF000000" Offset="0" />
</RadialGradientBrush>
</Image.OpacityMask>
</Image>

使用图像绘制 (ImageBrush)

您使用 ImageBrush 来使用图像绘制采用画笔的区域。例如,ImageBrush 可用于 CanvasInkPresenterBackground 属性的值

<!-- TextBlock with an image brush applied to the text. -->
<TextBlock FontFamily="Verdana" FontSize="72"
FontStyle
="Italic" FontWeight="Bold">
SHRUBBERY
<TextBlock.Foreground>
<ImageBrush ImageSource="forest.jpg"/>
</TextBlock.Foreground>
</TextBlock>


posted @ 2011-03-16 13:45  南宫元耘  阅读(246)  评论(0编辑  收藏  举报