WPF中用xaml怎么给Gird或canvas插入背景图片?

WPF中用xaml怎么给Gird或canvas插入背景图片?,第1张

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

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),如何成为背景呢?

首先把这张图放在工程中

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了。

我们可以获取canvas对象为var c=document.getElementById("myCanvas")其应有js属性方法如下列举:

1:绘制渲染对象,c.getContext("2d"),获取2d绘图对象,无论我们调用多少次获取的对象都将是相同的对象。

2:绘制方法:

clecrRect(left,top,width,height)清除制定矩形区域,

fillRect(left,top,width,height)绘制矩形,并以fillStyle填充。

fillText(text,x,y)绘制文字;

strokeRect(left,top,width,height)绘制矩形,以strokeStyle绘制边界。

beginPath():开启路径的绘制,重置path为初始状态;

closePath():绘制路径path结束,它会绘制一个闭合的区间,添加一条起始位置到当前坐标的闭合曲线;

moveTo(x,y):设置绘图其实坐标。

lineTo(x,y)绘制从当前其实位置到x,y直线。

fill(),stroke(),clip():在完成绘制的最后的填充和边界轮廓,剪辑区域。

arc():绘制弧,圆心位置、起始弧度、终止弧度来指定圆弧的位置和大小;

rect():矩形路径

drawImage(Imag img):绘制图片;

quadraticCurveTo():二次样条曲线路径,参数两个控制点;

bezierCurveTo():贝塞尔曲线,参数三个控制点;

createImageData,getImageData,putImageData:为Canvas中像素数据。ImageData为记录width、height、和数据 data,其中data为我们色素的记录为

argb,所以数组大小长度为width*height*4,顺序分别为rgba。getImageData为获取矩形区域像素,而putImageData则为设置矩形区域像素;

… and so on!

3:坐标变换:

translate(x,y):平移变换,原点移动到坐标(x,y);

rotate(a):旋转变换,旋转a度角;

scale(x,y):伸缩变换;

save(),restore():提供和一个堆栈,保存和恢复绘图状态,save将当前绘图状态压入堆栈,restore出栈,恢复绘图状态;


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/7983901.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存