WPF中为窗体设置背景图片

摘要:
在WPF应用程式中,我们往往想为一个窗体设置一个中意的背景图,而不是单独的为这个Background设置成某种颜色或渐变颜色的背景。在WPF利用ExpressionBlend工具如何达到这种效果呢?
在WPF应用程式中,我们往往想为一个窗体设置一个中意的背景图,而不是单独的为这个Background设置成某种颜色或渐变颜色的背景。 在WPF 利用Expression Blend工具如何达到这种效果呢?比如我们想做一个登陆窗体界面,界面效果如下图所示: 下面我就大概说下过程,首页建立一个工程为WpfLoginView,并在Expression Blend 下设

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

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

WPF中为窗体设置背景图片第1张

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

WPF中为窗体设置背景图片第2张

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">
<Gridx:Name="LayoutRoot"Loaded="LayoutRoot_Loaded">
<Grid.ColumnDefinitions>
<ColumnDefinitionWidth="120.012"/>
<ColumnDefinitionWidth="209.988"/>
<ColumnDefinitionWidth="81"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinitionHeight="72.899"/>
<RowDefinitionHeight="30.101"/>
<RowDefinitionHeight="43"/>
<RowDefinitionHeight="43"/>
<RowDefinitionHeight="80"/>
</Grid.RowDefinitions>
<LabelHorizontalAlignment="Left"Content="用户名"Margin="0,8"
Grid.Column=
"1"Grid.Row="2"Width="60"FontSize="16"Foreground="#FFE2E4EB"/>
<LabelHorizontalAlignment="Left"Margin="0,4,0,12"Content="密码"
Grid.Column=
"1"Grid.Row="3"FontSize="16"Width="64"Foreground="#FFEEF0F5"/>
<TextBoxx: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>
<LinearGradientBrushEndPoint="0,20"StartPoint="0,0"
MappingMode=
"Absolute">
<GradientStopColor="#FFABADB3"Offset="0.05"/>
<GradientStopColor="#FFE2E3EA"Offset="0.07"/>
<GradientStopColor="#FFBCDBF9"Offset="1"/>
</LinearGradientBrush>
</TextBox.BorderBrush>
</TextBox>
<PasswordBoxx: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>
<LinearGradientBrushEndPoint="0,20"StartPoint="0,0"
MappingMode=
"Absolute">
<GradientStopColor="#FFABADB3"Offset="0.05"/>
<GradientStopColor="#FFE2E3EA"Offset="0.07"/>
<GradientStopColor="#FFC1DBF5"Offset="1"/>
</LinearGradientBrush>
</PasswordBox.BorderBrush>
</PasswordBox>
<Buttonx: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="{DynamicResourceConfirmCancelButtonStyle}"/>
<Buttonx: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="{DynamicResourceConfirmCancelButtonStyle}"/>
</Grid>
</Window>

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

WPF中为窗体设置背景图片第3张

首先把这张图放在工程中

WPF中为窗体设置背景图片第4张

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

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

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

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

本文来自Chicano的博客,原文地址:http://www.cnblogs.com/chicano/archive/2011/06/21/2086151.html

免责声明:文章转载自《WPF中为窗体设置背景图片》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c++跨动态库DLL的内存分配与释放问题2HTML5 Canvas显示本地图片实例1、Canvas预览图片实例1下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Wpf之Xaml属性值和特性值(一)

其实我一直很好奇在xaml中,通过Attribute=Value这种方式可以进行对元素的描述, 例如: <Rectangle Name=” rectangle” Fill=”Blue”/> 这是一个矩形,并且利用蓝色来填充。我们知道在wpf中给UI元素上色可以用Brush(画刷),在MSDN中得知Rectangle.Fill就是一个Brush类...

解决关闭窗口,C#报错"在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke"

情况:在C#开发的过程中多线程委托是经常用的,今天在测试以前写的软件的时候发现有个问题,报 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。 这样的错误。 解决方法:加上 if (this.IsHandleCreated) 1、首先分析问题,句柄:是对象的引用名,存于栈区(可以理解为对象的指针),对象是存于堆区,通过操控栈区...

wpf mvvm模式下 在ViewModel关闭view

本文只是博主用来记录笔记,误喷 使用到到了MVVM中消息通知功能 第一步:在需要关闭窗体中注册消息   1 public UserView() 2 { 3 this.DataContext = new UserViewModel(); 4 InitializeComponent();...

10分钟10行代码开发APP(delphi 应用案例)

总结一下用到的知识(开发环境安装配置不计算在内): 第六章 使用不同风格的按钮; 第十七章 让布局适应不同大小与方向的窗体; 第二十五章使用 dbExpress访问 InterBase ToGo 第二十九章 从移动客户端连接到企业数据库; 以下是具体制作步骤: 1、创建DataSnap服务VCL应用程序 1.1 创建服务程序 新建一个项目:D...

WPF 自定义属性

  做了一个自定义控件和一个自定义Grid,里面的元素可以随着绑定属性变化: 效果图(一定滑块): 关键代码: 1、自定义属性代码: public class MyGrid : Grid { public static readonly DependencyProperty ColumnCountProperty = De...

winform 父窗体与子窗体数据传递

简单实例截图: 父窗体代码如下: public partial class Form1 : Form{Child2 child2 = new Child2();public Form1(){InitializeComponent();child2.receive += new Child2.receiveData(testReceive);} privat...