[Windows 8 App]圖形-----【輪廓樣式】

[Windows 8 App]圖形-----【輪廓樣式】

我們在上一篇介紹【Geometry】有提到Stroke和StrokeThickness,

【Geometry】參考網址:http://www.dotblogs.com.tw/frank12690/archive/2013/11/20/130508.aspx

我們在這邊將進一步地介紹輪廓樣式,如何讓圖形變得更美觀

 

  • 線的兩端效果

在畫線的時後,使用【StrokeStartLineCap】和【StrokeEndLineCap】,這是改變線的起始端和末端

這兩個屬性的可選值有:【Flat】、【Round】、【Square】、【Triangle】

Flat:沒有特殊效果,屬性的默認值

Round:線的末端產生半圓

Square:線的末端產生矩形

Triangle:線的末端產生等腰直角三角形

 

我們來實作個範例:

首先新增一個空白專案,取名為【LineCapPage】,開啟【MainPage.xaml】

 

程式碼如下:

<Page        
    x:Class="LineCapPage.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:LineCapPage"
    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}">
        <Polyline Stroke="Yellow" StrokeThickness="30" StrokeStartLineCap="Triangle" StrokeEndLineCap="Round" Points="300,200 600,500 800,200" >
        </Polyline>
    </Grid>
</Page>

 

   我們來解析一下這行程式碼:

<Polyline Stroke="Yellow" StrokeThickness="30" StrokeStartLineCap="Triangle" StrokeEndLineCap="Round" Points="300,200 600,500 800,200">

Stroke="Yellow" 線條顏色

StrokeThickness="30" 線條的粗細

StrokeStartLineCap="Triangle" 線條的起始端(左邊),Triangle等腰三角形

StrokeEndLineCap="Round"     線條的末端(右邊),Round半圓形

Points="300,200 600,500 800,200"

300:表示起始端(左邊)離左邊螢幕的距離

200:表示起始端(左邊)離上邊螢幕的距離

600:表示交叉點(中間)離左邊螢幕的距離

500:表示交叉點(中間)離上邊螢幕的距離

800:表示末端(右邊)離左邊螢幕的距離

200:表示末端(右邊)離上邊螢幕的距離

 

設計畫面:我設計了一個黃色勝利標誌

22

 

 

這時有人應該會有人覺得【Flat】和【Square】的差別差在哪裡?

沒關係,看這邊看這邊~

我們會用範例實作給各位看【Flat】和【Square】的差別

 

新增一個空白專案,取名為【FlatSquarePage】,開啟【MainPage.xaml】

 

程式碼如下:

<Page    
    x:Class="FlatSquarePage.MainPage"  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:FlatSquarePage"
    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}">
        <Polyline Stroke="Green" StrokeThickness="30" StrokeStartLineCap="Square" StrokeEndLineCap="Flat" Points="900,200 700,500,400,200"></Polyline> 
        <Polyline Stroke="Black" StrokeThickness="2" Points="900,200 700,500,400,200"></Polyline>
    </Grid>
</Page>

 

設計畫面:

23

 

有發現【Flat】和【Square】的差別嗎??

看仔細一點,【Flat】和【Square】的末端,【Square】是右方,裡頭的線並沒延展到底,【Flat】的是左方,線有延伸到底

主要是【Square】綠色線會在最末端的地方,再多添加一塊矩形,所以黑色線才沒有延伸到底,這就是【Flat】和【Square】的差別

 

  • 圖形的轉角效果

有沒有發現,我上面的二個範例轉角處,是不是都尖的,這並不是絕對,這可以有其他的選擇

這裡將作這部分的介紹

轉角是使用【StrokeLineJoin】設定屬性效果

StrokeLineJoin可選值:【Miter】、【Bevel】、【Round】

Miter:這就是上面範例的轉角,這是屬性的默認值

Bevel:這是使用斜角頂點來做轉角

Round:這是使用圓角頂點來做轉角

 

我們來透過下面的範例看轉角的效果

新增一個空白專案,取名為【FlatSquarePage】,開啟【MainPage.xaml】

 

程式碼如下:

<Page
    x:Class="StrokeLineJoinPage.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:StrokeLineJoinPage"
    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}">
        <Polyline Stroke="Yellow" StrokeThickness="40" Points="200,600 200,200 400,600 400,200" StrokeLineJoin="Bevel"></Polyline>
        <Polyline Stroke="Green" StrokeThickness="40" Points="800,600 800,200 1000,600 1000,200" StrokeLineJoin="Round"></Polyline>
    </Grid>
</Page>

 

解析這行程式碼:

<Polyline Stroke="Yellow" StrokeThickness="40" Points="200,600 200,200 400,600 400,200" StrokeLineJoin="Bevel"></Polyline>

Stroke="Yellow" 線條的顏色

StrokeThickness="40" 線條的粗細

StrokeLineJoin="Bevel" 線條與線條間的轉角

Points="900,100 900,500 600,100 600,500"

200:起始端離左邊螢幕的距離

600:起始端離上邊螢幕的距離

200:交叉點離左邊螢幕的距離

200:交叉點離上邊螢幕的距離

400:交叉點離左邊螢幕的距離

600:交叉點離上邊螢幕的距離

400:末端離左邊螢幕的距離

200:末端離上邊螢幕的距離

 

解析這行程式碼:

<Polyline Stroke="Green" StrokeThickness="40" Points="800,600 800,200 1000,600 1000,200" StrokeLineJoin="Round"></Polyline>

這行和上面的差別就差在一個是斜角一個是圓角

 

設計的畫面:

24

 

  • 虛線樣式

使用【StrokeDashArray】可以讓實線變成虛線,並且使用【StrokeDashCap】可以調整虛線兩端的效果,我們來做個範例!!

新增一個空白專案,取名為【StrokeDashArrayPage】,開啟【MainPage.xaml】

 

程式碼如下:

<Page
    x:Class="StrokeDashArrayPage.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:StrokeDashArrayPage"
    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}">
        <Polyline Stroke="Red" StrokeThickness="20" StrokeStartLineCap="Round" StrokeEndLineCap="Round" Points="300,200 300,500 600,500 600,200" StrokeDashArray="1 1"></Polyline>
        <Polyline Stroke="Blue" StrokeThickness="20" StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeDashCap="Triangle" Points="900,200 900,500 1200,500 1200,200" StrokeDashArray="2 2"></Polyline>
    </Grid>
</Page>

 

程式碼解析:

左邊紅色U形

<Polyline Stroke="Red" StrokeThickness="20" StrokeStartLineCap="Round" StrokeEndLineCap="Round" Points="300,200 300,500 600,500 600,200" StrokeDashArray="1 1"></Polyline>

Stroke="Red" :線條顏色

StrokeThickness="10" :線條粗細

StrokeStartLineCap="Round" :線條的起始端圖形

StrokeEndLineCap="Round" :線條的末端圖形

StrokeDashArray="1 1" :前面的 1 表示線的寬度,後面的 1 表示長度為前面 1 的倍數為間隙

Points="300,200 300,500 600,500 600,200"

300:起始端離左邊螢幕的距離

200 :起始端離上邊螢幕的距離

300:左交叉點離左邊螢幕的距離

500:左交叉點離上邊螢幕的距離

600:右交叉點離左邊螢幕的距離

500:右交叉點離上邊螢幕的距離

600:末端離左邊螢幕的距離

200:末端離上邊螢幕的距離

 

右邊藍色U形

<Polyline Stroke="Blue" StrokeThickness="20" StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeDashCap="Triangle" Points="900,200 900,500 1200,500 1200,200" StrokeDashArray="2 2"></Polyline>

與紅色U形的主要差別

StrokeDashCap="Triangle":虛線兩端的圖形效果

 

設計畫面:

25