Windows Store App 圖像

Windows應用商店應用中可使用兩種方法來顯示圖片,這兩種方法分別爲使用Image對象和使用ImageBrush對象。Image對象能夠直接呈現一幅圖像,而ImageBrush對象則能夠用一幅圖像來繪製其餘對象。網絡

9.2.1 ImageImageBrush

本節將介紹Image對象和ImageBrush對象的使用方法、經常使用屬性等,下面先經過一個示例介紹Image對象的使用方法。佈局

首先新建一個Windows應用商店的空白應用程序項目,並命名爲ImageSample,在項目中新建一個名爲Picture的文件夾,向文件夾中添加一張要顯示的圖片car.jpg。而後打開項目的MainPage.xaml文件,在Grid元素中添加一個Image控件,代碼以下所示:spa

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

在上面的代碼中,使用Source屬性指定了Image控件顯示的圖像路徑。啓動調試後,能夠看到,圖像的顯示效果如圖9-1所示。orm

9-1使用Image對象顯示圖片的效果圖對象

接下來介紹ImageBrush對象,它與Image對象很是類似,區別在於Image對象用於直接顯示圖像,而ImageBrush對象則是用一幅圖像繪製其餘對象區域,例如能夠在Ellipse對象的Fill屬性中使用ImageBrush對象,或者在Canvas對象的Backgruond屬性中使用ImageBrush對象。事件

下面經過一個示例介紹如何在Ellipse控件的Fill屬性中使用ImageBrush對象來顯示圖像。圖片

首先新建一個Windows應用商店的空白應用程序項目,命名爲ImageBrushSample,在項目中新建一個名爲Picture的文件夾,並向文件夾中添加一張要顯示的圖片car.jpg。而後打開項目的MainPage.xaml文件,在Grid元素中添加以下代碼:ip

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

     <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屬性值的顯示效果

相關文章
相關標籤/搜索