zoukankan      html  css  js  c++  java
  • Windows Store App 图像

    Windows应用商店应用中可以使用两种方法来显示图片,这两种方法分别为使用Image对象和使用ImageBrush对象。Image对象可以直接呈现一幅图像,而ImageBrush对象则可以用一幅图像来绘制其他对象。

    9.2.1 ImageImageBrush

    本节将介绍Image对象和ImageBrush对象的使用方法、常用属性等,下面先通过一个示例介绍Image对象的使用方法。

    首先新建一个Windows应用商店的空白应用程序项目,并命名为ImageSample,在项目中新建一个名为Picture的文件夹,向文件夹中添加一张要显示的图片car.jpg。然后打开项目的MainPage.xaml文件,在Grid元素中添加一个Image控件,代码如下所示:

    <Image HorizontalAlignment="Center" Height="650" Margin="237,64,237,0" VerticalAlignment="Top" Width="892" Source="Picture/car.jpg"/>

    在上面的代码中,使用Source属性指定了Image控件显示的图像路径。启动调试后,可以看到,图像的显示效果如图9-1所示。

    9-1使用Image对象显示图片的效果图

    接下来介绍ImageBrush对象,它与Image对象非常相似,区别在于Image对象用于直接显示图像,而ImageBrush对象则是用一幅图像绘制其他对象区域,例如可以在Ellipse对象的Fill属性中使用ImageBrush对象,或者在Canvas对象的Backgruond属性中使用ImageBrush对象。

    下面通过一个示例介绍如何在Ellipse控件的Fill属性中使用ImageBrush对象来显示图像。

    首先新建一个Windows应用商店的空白应用程序项目,命名为ImageBrushSample,在项目中新建一个名为Picture的文件夹,并向文件夹中添加一张要显示的图片car.jpg。然后打开项目的MainPage.xaml文件,在Grid元素中添加如下代码:

    <Ellipse Width="1206" Height="638" HorizontalAlignment="Left" Margin="80,70,0,0" Stroke="Black" VerticalAlignment="Top" >

         <Ellipse.Fill>

             <ImageBrush ImageSource="Picture/car.jpg"/>

         </Ellipse.Fill>

    </Ellipse>

    在上面的代码中,首先添加一个Ellipse元素并设置其属性,接着在Ellipse.Fill属性中使用ImageBrush控件的ImageSource属性指定要显示的图像路径。启动调试后,可以看到图像显示效果如图9-2所示。

    9-2 通过ImageBrush绘制的Ellipse控件的效果图

    了解了Image对象和ImageBrush对象的基本用法后,下面介绍它们的属性,这两个对象的属性类似,常用的属性如下:

    q  Source属性,表示图片的地址源,支持本地图片,同时也支持网络图片。

    q  Opacity属性,表示图片的不透明度,该属性可以设置为0.01.0的任意值,0.0表示图像完全透明,1.0表示图像完全不透明。

    q  Clip属性,该属性可以精确裁减图片,只有在裁剪区域内的图像才会被显示,但目前尚不支持非矩形区域裁剪。

    q  Stretch属性,表示图片的呈现状态,共有4种属性值,分别为NoneUniformUniformToFillFill,这4Stretch属性值的显示效果如图9-3所示。

    9-3 不同Stretch属性值的显示效果

    m  None值表示图像不会拉伸以填充溢出部分的尺寸。在将Stretch属性设定为该值时必须小心,如果原图像尺寸大于显示区域尺寸,那么设定为该值将导致图像被裁减,这通常是不可取的,因为在这种情况下并不能像刻意裁剪那样控制被裁减掉的图像部分。

    m  Uniform值表示图像将被按比例拉伸以适应输出尺寸,即图像有一边满足规定的尺寸即可,图像的原始宽高比例将被保存下来,该值为Stretch属性的默认值。

    m  UniformToFill值表示图像将被按比例拉伸以完全填充输出区域,图像的原始宽高比例将被保存下来。

    m  Fill值表示图像将被按比例拉伸以适应输出尺寸,即图像有一边满足规定的尺寸即可,由于设定为该值时图像内容的宽高是被分别按比例拉伸的,因此图像的原始宽高比例将不会保存,在显示时图像有可能扭曲。

    接下来通过一个示例,具体展示各种Stretch属性值的显示效果,读者可以仔细体会它们之间的差别,以便在使用时灵活选择各种Stretch属性值。

    首先在Visual Studio 2012中新建一个Windows应用商店的空白应用程序项目,并命名为ImageStretch,在项目中新建一个名为Picture的文件夹,并向文件夹中添加一张需要显示的图片car.jpg。然后打开项目的MainPage.xaml文件,在界面上添加一个Image控件并命名为CarImage,用于显示图片,接着添加4Button控件,用来设置Stretch属性的4个属性值,完成之后的代码如下所示:

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">

        <Image x:Name="CarImage" HorizontalAlignment="Center" Height="608" Margin="40,84,419,76" VerticalAlignment="Center" Width="1007" Source="Picture/car.jpg"/>

        <Button x:Name="NoneButton" Content="None" HorizontalAlignment="Left" Height="98" Margin="1058,64,0,0" VerticalAlignment="Top" Width="272" FontSize="36" Click="NoneButton_Click"/>

        <Button x:Name="UniformButton" Content="Uniform" HorizontalAlignment="Left" Height="98" Margin="1058,248,0,0" VerticalAlignment="Top" Width="272" FontSize="36" Click="UniformButton_Click"/>

        <Button x:Name="UniformToFillButton" Content="UniformToFill" HorizontalAlignment="Left" Height="98" Margin="1058,438,0,0" VerticalAlignment="Top" Width="272" FontSize="36" Click="UniformToFillButton_Click"/>

        <Button x:Name="FillButton" Content="Fill" HorizontalAlignment="Left" Height="98" Margin="1058,616,0,0" VerticalAlignment="Top" Width="272" FontSize="36" Click="FillButton_Click"/>

    </Grid>

    布局好前台界面后,接下来打开项目中的MianPage.xaml.cs文件,为4Button控件添加Click事件处理方法,实现单击不同按钮将CarImage控件的Stretch属性值设置为NoneUniformUniformToFillFill,从而改变图片的显示效果。

    首先添加Name属性为“NoneButton”按钮的Click事件处理方法,单击按钮将CarImage控件的Stretch属性值设置为None,代码如下所示:

    private void NoneButton_Click(object sender, RoutedEventArgs e)

    {

        //设置Stretch属性值为None

        CarImage.Stretch = Stretch.None;

    }

    然后添加Name属性为“UniformButton”按钮的Click事件处理方法,单击按钮将CarImage控件的Stretch属性值设置为Uniform,代码如下所示:

    private void UniformButton_Click(object sender, RoutedEventArgs e)

    {

        //设置Stretch属性值为Uniform

    CarImage.Stretch = Stretch.Uniform;

    }

    接下来添加Name属性为“UniformToFillButton”按钮的Click事件处理方法,单击按钮将CarImage控件的Stretch属性值设置为UniformToFill,代码如下所示:

    private void UniformToFillButton_Click(object sender, RoutedEventArgs e)

    {

        //设置Stretch属性值为UniformToFill

    CarImage.Stretch = Stretch.UniformToFill;

    }

    最后添加Name属性为“FillButton”按钮的Click事件处理方法,单击按钮将CarImage控件的Stretch属性值设置为Fill,代码如下所示:

    private void FillButton_Click(object sender, RoutedEventArgs e)

    {

        //设置Stretch属性值为Fill

    CarImage.Stretch = Stretch.Fill;

    }

    启动调试,分别为将Stretch属性值设定为NoneUniformUniformToFillFill后的图像显示效果对比如图9-4所示。

     

    aStretch属性值为None                           bStretch属性值为Uniform

     

    cStretch属性值为UnifromToFill                  dStretch属性值为Fill

    9-4 四种Strech属性值的显示效果

  • 相关阅读:
    python-历史
    10-函数命名空间,作用域,嵌套,闭包
    centos7 搭建dns服务器
    centos7 搭建dhcp服务器
    Nginx 启用 gzip 压缩
    Eclipse 个人手册
    Nginx 命令
    定时任务
    系统设计
    根据 xsd 生成 jaxb java 类
  • 原文地址:https://www.cnblogs.com/finehappy/p/4226680.html
Copyright © 2011-2022 走看看