WPF中为窗体设置背景图片

    在WPF应用程式中,我们往往想为一个窗体设置一个中意的背景图,而不是单独的为这个Background设置成某种颜色或渐变颜色的背景。

在WPF 利用Expression Blend工具如何达到这种效果呢?比如我们想做一个登陆窗体界面,界面效果如下图所示:

2011062115415141.png

下面我就大概说下过程,首页建立一个工程为WpfLoginView,并在Expression Blend 下设置一个如下图的界面

2011062115455042.png

xaml代码如下:

 
  
< Window
xmlns
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation "
xmlns:x
= " http://schemas.microsoft.com/winfx/2006/xaml "
xmlns:d
= " http://schemas.microsoft.com/expression/blend/2008 " xmlns:mc = " http://schemas.openxmlformats.org/markup-compatibility/2006 "
x:Class
= " WpfLoginView.LoginView "
x:Name
= " Window "
Title
= " LoginView " mc:Ignorable = " d " KeyDown = " Window_KeyDown " WindowStartupLocation = " CenterScreen " SizeToContent = " WidthAndHeight " AllowsTransparency = " True " WindowStyle = " None " Foreground = " #FF9DC2EF " >

< Grid x:Name = " LayoutRoot " Loaded = " LayoutRoot_Loaded " >
< Grid.ColumnDefinitions >
< ColumnDefinition Width = " 120.012 " />
< ColumnDefinition Width = " 209.988 " />
< ColumnDefinition Width = " 81 " />
</ Grid.ColumnDefinitions >
< Grid.RowDefinitions >
< RowDefinition Height = " 72.899 " />
< RowDefinition Height = " 30.101 " />
< RowDefinition Height = " 43 " />
< RowDefinition Height = " 43 " />
< RowDefinition Height = " 80 " />
</ Grid.RowDefinitions >
< Label HorizontalAlignment = " Left " Content = " 用户名 " Margin = " 0,8 " Grid.Column = " 1 " Grid.Row = " 2 " Width = " 60 " FontSize = " 16 " Foreground = " #FFE2E4EB " />
< Label HorizontalAlignment = " Left " Margin = " 0,4,0,12 " Content = " 密 码 " Grid.Column = " 1 " Grid.Row = " 3 " FontSize = " 16 " Width = " 64 " Foreground = " #FFEEF0F5 " />
< TextBox x:Name = " txtusername " TextWrapping = " Wrap " Margin = " 0,8,8,10 " Grid.Column = " 1 " Grid.Row = " 2 " BorderThickness = " 2 " HorizontalAlignment = " Right " Width = " 137.988 " d:LayoutOverrides = " GridBox " >
< TextBox.BorderBrush >
< LinearGradientBrush EndPoint = " 0,20 " StartPoint = " 0,0 " MappingMode = " Absolute " >
< GradientStop Color = " #FFABADB3 " Offset = " 0.05 " />
< GradientStop Color = " #FFE2E3EA " Offset = " 0.07 " />
< GradientStop Color = " #FFBCDBF9 " Offset = " 1 " />
</ LinearGradientBrush >
</ TextBox.BorderBrush >
</ TextBox >
< PasswordBox x:Name = " txtpassword " Margin = " 0,6,8,11 " Grid.Column = " 1 " Grid.Row = " 3 " BorderThickness = " 2 " HorizontalAlignment = " Right " Width = " 137.988 " d:LayoutOverrides = " GridBox " >
< PasswordBox.BorderBrush >
< LinearGradientBrush EndPoint = " 0,20 " StartPoint = " 0,0 " MappingMode = " Absolute " >
< GradientStop Color = " #FFABADB3 " Offset = " 0.05 " />
< GradientStop Color = " #FFE2E3EA " Offset = " 0.07 " />
< GradientStop Color = " #FFC1DBF5 " Offset = " 1 " />
</ LinearGradientBrush >
</ PasswordBox.BorderBrush >
</ PasswordBox >
< Button x:Name = " LoginConfirmButton " Content = " 登 陆 " Grid.Column = " 1 " Grid.Row = " 4 " Click = " LoginConfirmButton_Click " FontSize = " 16 " VerticalAlignment = " Top " Height = " 24.687 " Margin = " 64,8,91.988,0 " Style = " {DynamicResource ConfirmCancelButtonStyle} " />
< Button x:Name = " LoginCancelButton " Margin = " 144.988,8,0,0 " Content = " 取 消 " HorizontalAlignment = " Left " Width = " 57 " Grid.Column = " 1 " Grid.Row = " 4 " Click = " LoginCancelButton_Click " FontSize = " 16 " VerticalAlignment = " Top " Height = " 24.687 " Style = " {DynamicResource ConfirmCancelButtonStyle} " />
</ Grid >
</ Window >

注意一下这几个属性的设置:WindowStartupLocation="CenterScreen"  AllowsTransparency="True" WindowStyle="None"。两个Button的样式代码我就不贴了,下面我们假如有下面这么一张图片(Login.png),如何成为背景呢?

2011062115545182.png 

首先把这张图放在工程中

2011062115574657.png

接下来我们就要把这张图加载到窗体上,先贴代码吧,代码其实也就几句啦

 
  
public LoginView()
{
this .InitializeComponent();
txtusername.Focus();
// 聚焦在用户名输入框中
// 在此点之下插入创建对象所需的代码。
ImageBrush b = new ImageBrush();
b.ImageSource
= new BitmapImage( new Uri( " pack://application:,,,/Login.png " ));
b.Stretch
= Stretch.Fill;
this .Background = b;
}

直接在构造函数中输入以上代码就Ok了,有一点我想说的是,我们是把这图片作为一种资源运用到上面去,说白了就是一种Background资源,

应用的是像设置各种颜色似的资源,所以我们创建的是ImageBrush对象,还不是用Image对象。大概到这就完成了。瞎弄了下,不好的方面请见谅....

转载于:https://www.cnblogs.com/chicano/archive/2011/06/21/2086151.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值