[Windows 8 App]多媒體開發------【圖像】

【Windows 8 App】多媒體開發------【圖像】

【Image和ImageBrush】

首先建立一個空白的應用程式(XAML),並命名ImageSample,然後在專案下新增一個Images的資料夾

在Images資料夾下添加一張照片

1

 

 

在方案總管中開啟【MainPage.xaml】,然後在Grid元素中新增一個Image的控制項,並輸入以下程式碼


<Page  
     x:Class="ImageSample.MainPage"  
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    xmlns:local="using:ImageSample"   
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"   
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
    mc:Ignorable="d">
    
    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <Image HorizontalAlignment="Left" Height="748" VerticalAlignment="Top" Width="1346" Source="Images/cat.jpg" Margin="10,10,0,0"/> 
    </Grid> 
</Page>

 

然後就會顯示下面的畫面

2

 

這是Image的部分

那我們繼續介紹ImageBrush

我們將剛剛的專案刪掉,重新新增一個ImageBrushSample專案,一樣新增一個資料夾,然後在該資料夾下放一張圖片

完成後,開啟【MainPage.xaml】,然後在Grid元素中新增一個Ellipse元素,然後在Ellipse元素中的Ellipse.Fill屬性裡面使用ImageBrush控制項的ImageSource指定要顯示的圖片位址

程式碼如下


<Page  
    x:Class="ImageSample.MainPage"   
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    xmlns:local="using:ImageSample"  
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"   
    mc:Ignorable="d">
    
    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <Ellipse HorizontalAlignment="Left" Height="748" Margin="10,10,0,0" VerticalAlignment="Top" Width="1346">
            <Ellipse.Fill>
                <ImageBrush ImageSource="Images/cat.jpg" /> 
            </Ellipse.Fill> 
        </Ellipse> 
    </Grid> 
</Page>

 

程式碼輸入完後會顯示的畫面

3

 

 

介紹一下【Image和ImageBrush】的常用屬性:

  • Source屬性:圖片的位址,也可以是網路位址。
  • Opacity屬性:圖片不透明度,值範圍0.0 ~ 1.0 ,值越小越透明,值越大越不透明。
  • Clip屬性:這是可以精確裁減圖片的屬性。
  • Stretch屬性:圖片的呈現狀態,有這四種,None、Uniform、UniformTofill、Fill 四種。

然後Stretch屬性下的四種狀態表示意義:

  • None:表示圖片不會延伸填充溢出的部分。
  • Uniform:表示圖片將按比例延伸來適應輸出尺寸,寬與高的比例不會被改變,預設值。
  • UniformToFill:表示圖片將按比例延伸至完全填充輸出區域,寬與高的比例不會被改變。
  • Fill:表示圖片將按比例延伸來適應輸出尺寸,原始的寬與高不會保存,所以有可能會扭曲圖片。

 

我們來實作Stretch屬性的四種狀態

新增一個專案,【ImageStretch】,在ImageStretch專案下新增一個資料夾,並放入一張圖片

然後開啟【MainPage.xaml】,在Grid中放一個Image控制項和似的Button控制項

之後就來寫程式碼,程式碼如下:


<Page   
    x:Class="ImageSample.MainPage"   
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
    xmlns:local="using:ImageSample"   
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"   
    mc:Ignorable="d">
    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <!--<Image x:Name="CatImage" HorizontalAlignment="Left" Height="392" Margin="10,10,0,0" VerticalAlignment="Top" Width="618" Source="Images/cat.jpg"/>--> 
        <Button x:Name="None" Content="None" HorizontalAlignment="Left" Margin="1107,38,0,0" VerticalAlignment="Top" Height="112" Width="226" FontSize="30" Click="None_Click"/> 
        <Button x:Name="Uniform" Content="Uniform" HorizontalAlignment="Left" Margin="1107,230,0,0" VerticalAlignment="Top" Height="112" Width="226" FontSize="30" Click="Uniform_Click"/> 
        <Button x:Name="UniformToFill" Content="UniformToFill" HorizontalAlignment="Left" Margin="1107,428,0,0" VerticalAlignment="Top" Height="112" Width="226" FontSize="30" Click="UniformToFill_Click"/> 
        <Button x:Name="Fill" Content="Fill" HorizontalAlignment="Left" Margin="1107,606,0,0" VerticalAlignment="Top" Height="112" Width="226" FontSize="30" Click="Fill_Click"/> 
        <Image x:Name="CatImage" HorizontalAlignment="Left" Height="680" Margin="10,38,0,0" VerticalAlignment="Top" Width="1077" Source="Images/cat.jpg"/> 
    </Grid> 
</Page>

 

然後再到【MainPage.xaml.cs】中寫Click的幾行程式碼,完整程式碼如下:


using System;  
using System.Collections.Generic;  
using System.IO;  
using System.Linq;   
using Windows.Foundation;   
using Windows.Foundation.Collections;   
using Windows.UI.Xaml;   
using Windows.UI.Xaml.Controls;   
using Windows.UI.Xaml.Controls.Primitives;  
using Windows.UI.Xaml.Data;  
using Windows.UI.Xaml.Input;  
using Windows.UI.Xaml.Media;  
using Windows.UI.Xaml.Navigation;  

namespace ImageSample  
{  
    public sealed partial class MainPage : Page  
    {  
        public MainPage()  
        {  
            this.InitializeComponent();  
        }  
        protected override void OnNavigatedTo(NavigationEventArgs e)  
        {  
        }  
        private void None_Click(object sender, RoutedEventArgs e)  
        {  
            CatImage.Stretch = Stretch.None;  
        }  
        private void Uniform_Click(object sender, RoutedEventArgs e)  
        {  
            CatImage.Stretch = Stretch.Uniform; 
        }  
        private void UniformToFill_Click(object sender, RoutedEventArgs e)  
        {  
        CatImage.Stretch = Stretch.UniformToFill;  
        }  
        private void Fill_Click(object sender, RoutedEventArgs e)  
        {  
            CatImage.Stretch = Stretch.Fill;  
        }  
    } 
}

 

顯示的畫面,請各位把程式碼輸入進去就會知道囉!!