一点一滴掌握WPF应用系列 - 画刷使用(2):ImageBrush
来源:互联网 发布:淘宝神笔模板编辑 编辑:程序博客网 时间:2024/05/22 05:51
ImageBrush 使用ImageSource 绘制一个区域。 与ImageBrush 一起使用的ImageSource 的最常见类型是BitmapImage,它描述一个位图图形。 使用Drawing 对象时,您可以使用DrawingImage 进行绘制,但是使用DrawingBrush 会更简单。 若要使用ImageBrush 进行绘制,请创建一个 BitmapImage 并用它来加载位图内容。 然后,使用BitmapImage 来设置 ImageBrush 的 ImageSource 属性。 最后,将ImageBrush 应用到想要绘制的对象。 在XAML中,还可以将 ImageBrush 的 ImageSource 属性仅设置为要加载的图像的路径。与所有 Brush 对象一样,ImageBrush 可用于绘制诸如形状、面板、控件和文本之类的对象。
默认情况下,ImageBrush 会将其图像拉伸以完全充满要绘制的区域,如果绘制的区域和该图像的长宽比不同,则可能会扭曲该图像。 您可以通过将 Stretch 属性从默认值 Fill 更改为 None、Uniform 或 UniformToFill 来更改此行为。 由于 ImageBrush 是 TileBrush 的一种类型,因此您可以准确指定图像画笔如何填充输出区域,甚至创建图案。
以下示例使用 ImageBrush 绘制 Canvas 的 Background。
前端代码实现(XAML):
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <StackPanel> <Canvas Height="200" Width="300"> <Canvas.Background> <ImageBrush ImageSource="mydog.png" /> </Canvas.Background> </Canvas> </StackPanel> </Grid></Window>
后端代码实现:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace WpfApplication1{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var mainPanel = new StackPanel(); canvasBackgroundExample(mainPanel); this.Content = mainPanel; } private void canvasBackgroundExample(Panel mainPanel) { var bitmapImage = new BitmapImage(new Uri("mydog.png", UriKind.Relative)); var myImageBrush = new ImageBrush(bitmapImage); Canvas myCanvas = new Canvas(); myCanvas.Width = 300; myCanvas.Height = 200; myCanvas.Background = myImageBrush; mainPanel.Children.Add(myCanvas); } }}
-----------------------------------------------------------------------------------------------------------------------------------------------------
感谢阅读,希能对你有益。
2015年10月14日
Kevin.Chen 蘇州.娄城
O(∩_∩)O~
- 一点一滴掌握WPF应用系列 - 画刷使用(2):ImageBrush
- 一点一滴掌握WPF应用系列 - 画刷使用(1):SolidColorBrush、LinearGradientBrush、RadialGradientBrush
- 深入WPF中的图像画刷(ImageBrush)之1——ImageBrush使用举例
- 深入WPF中的图像画刷(ImageBrush)之2——ImageBrush的铺设方式
- WPF:理解TileBrush(ImageBrush,DrawingBrush和VisualBrush)
- wpf imageBrush的扩展贴图
- Silverlight开发历程—(ImageBrush图像画刷和WriteableBitmap绘制位图)
- 一起学WPF系列(2):第一个WPF应用程序
- WPF 基础到企业应用系列2——WPF前世今生
- WPF 基础到企业应用系列2——WPF前世今生
- WPF 基础到企业应用系列2——WPF前世今生
- WPF开辟系列一:WPF应用法度生命周期
- 微软WPF技术应用与实践系列
- WPF 基础到企业应用系列索引
- 掌握 Dojo 工具包( 2):使用 Dojo 框架开发 Ajax 应用
- 一点一滴做好嵌入式2
- mysql小结(一点一滴)
- 一点一滴
- jquery中filter,children,find三者的区别?
- <LeetCode><Easy>263 Ugly Number (因式分解)
- nodejs读写json文件
- poj 3126
- Maven实战 第4章 背景案例
- 一点一滴掌握WPF应用系列 - 画刷使用(2):ImageBrush
- Dagger 版本
- NSURLSession类分析
- 在QT中使用哈希表存储数据
- jQuery Mobile动态刷新页面样式
- git忽略已经提交的文件
- web.xml中的contextConfigLocation的作用
- 安装 casperjs
- SDWebImage浅析