|
概述
Silverlight 2 Beta 1版本發(fā)布了,無(wú)論從Runtime還是Tools都給我們帶來(lái)了很多的驚喜,如支持框架語(yǔ)言Visual Basic, Visual C#, IronRuby, IronPython,對(duì)JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步學(xué)Silverlight 2系列》文章將從Silverlight 2基礎(chǔ)知識(shí)、數(shù)據(jù)與通信、自定義控件、動(dòng)畫(huà)、圖形圖像等幾個(gè)方面帶您快速進(jìn)入Silverlight 2開(kāi)發(fā)。
本文將簡(jiǎn)單介紹Silverlight中的基本圖形,主要有Line、Ellipse、Rectangle、Path、Polygon、Polyline六種,它們之間的繼承關(guān)系如下所示:
在Silverlight中,所有的圖形幾乎都具有如下幾個(gè)重要的屬性:
Stroke:對(duì)邊框線填充
StrokeThickness:邊框線的寬度
Fill:對(duì)圖形進(jìn)行填充
Line
Line顧名思義,在兩點(diǎn)之間畫(huà)出一條直線,需要指定起始點(diǎn)(X1、Y1)和終結(jié)點(diǎn)(X2、Y2)的坐標(biāo)。如下面的例子:
<Canvas Background="#CDFCAE"> <Line Canvas.Top="20" Canvas.Left="20" X1="20" Y1="20" X2="400" Y2="20" Stroke="#FF9900" StrokeThickness="4"> </Line> <Line Canvas.Top="40" Canvas.Left="20" X1="20" Y1="40" X2="200" Y2="180" Stroke="#0099FF" StrokeThickness="5"> </Line> <Line Canvas.Top="20" Canvas.Left="240" X1="220" Y1="20" X2="220" Y2="200" StrokeThickness="6"> <Line.Stroke> <LinearGradientBrush StartPoint="0,0"> <GradientStop Color="#FFFFFF" Offset="0.0" /> <GradientStop Color="#307801" Offset="1.0" /> </LinearGradientBrush> </Line.Stroke> </Line></Canvas>
運(yùn)行后如下所示,分別畫(huà)出三條直線:
Ellipse
Ellipse即橢圓形,如果設(shè)置長(zhǎng)和高相等,畫(huà)出來(lái)將是圓形,主要的屬性還是前面說(shuō)的那三個(gè)。如下面的示例:
<Canvas Background="#CDFCAE"> <Ellipse Canvas.Top="20" Canvas.Left="40" Width="160" Height="80" Fill="#FF9900" Stroke="Black" StrokeThickness="3"> </Ellipse> <Ellipse Canvas.Top="20" Canvas.Left="260" Width="180" Height="100"> <Ellipse.Fill> <RadialGradientBrush GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5"> <GradientStop Color="#0099FF" Offset="0" /> <GradientStop Color="#FF0000" Offset="0.25" /> <GradientStop Color="#FCF903" Offset="0.75" /> <GradientStop Color="#3E9B01" Offset="1" /> </RadialGradientBrush> </Ellipse.Fill> </Ellipse> <Ellipse Canvas.Top="120" Canvas.Left="160" Width="100" Height="100" Fill="#FF9900" Stroke="#000000" StrokeThickness="2"> </Ellipse></Canvas>
Rectangle
Rectangle看名稱就知道是矩形,設(shè)置長(zhǎng)度和高度相等則為正方形,其主要的屬性還是開(kāi)始我們提到的那三個(gè),同時(shí)還可以通過(guò)RadiusX和RadiusY來(lái)設(shè)置它的圓角效果,看下面的例子:
<Canvas Background="#CDFCAE"> <Rectangle Canvas.Top="20" Canvas.Left="40" Width="160" Height="80" Fill="#FF9900" Stroke="Black" StrokeThickness="3"> </Rectangle> <Rectangle Canvas.Top="20" Canvas.Left="260" Width="180" Height="100"> <Rectangle.Fill> <RadialGradientBrush GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5"> <GradientStop Color="#0099FF" Offset="0" /> <GradientStop Color="#FF0000" Offset="0.25" /> <GradientStop Color="#FCF903" Offset="0.75" /> <GradientStop Color="#3E9B01" Offset="1" /> </RadialGradientBrush> </Rectangle.Fill> </Rectangle> <Rectangle Canvas.Top="120" Canvas.Left="120" Width="100" Height="100" Stroke="#000000" StrokeThickness="2" RadiusX="15" RadiusY="15"> <Rectangle.Fill> <LinearGradientBrush StartPoint="0,1"> <GradientStop Color="#FFFFFF" Offset="0.0" /> <GradientStop Color="#FF9900" Offset="1.0" /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle></Canvas>
運(yùn)行后如下所示,其中有兩個(gè)加上了漸變效果:
Path
相比較前面三個(gè)簡(jiǎn)單的圖形來(lái)說(shuō),Path相對(duì)來(lái)說(shuō)比較復(fù)雜,它用來(lái)畫(huà)出一系列的相連的圓弧或者線條,可以稱之為“軌跡”,使用它可以畫(huà)出任意復(fù)雜的形狀,主要通過(guò)Data屬性來(lái)展現(xiàn)。一個(gè)簡(jiǎn)單的Path聲明示例如下:
<Canvas Background="#CDFCAE"> <Path Stroke="Orange" StrokeThickness="3" Data="M 10,40 L 300,40 V 100 H 240 S 300,240 400,175"> </Path></Canvas>
運(yùn)行后如下所示:
這里對(duì)Data做一下簡(jiǎn)單的解釋,Silverlight提供了一種稱之為“迷你語(yǔ)言”的屬性句法,來(lái)描述如何畫(huà)出軌跡形狀,包括M(移動(dòng)命令,起始點(diǎn))、L(直線,結(jié)束點(diǎn))、H(水平線)、V(垂直線)、C(三次貝塞爾曲線)、Q(兩次貝塞爾曲線)、A(橢圓弧曲線)、Z(結(jié)束命令)等。更為詳細(xì)的使用大家可以參考SDK。
Polygon
Polygon用來(lái)畫(huà)多邊形,需要用Points屬性來(lái)指定幾個(gè)特定的點(diǎn),至于畫(huà)幾邊形,要看你定義幾個(gè)點(diǎn)了(要看救生員啥時(shí)救他—宋丹丹語(yǔ)錄),它會(huì)自動(dòng)閉合。
<Canvas Background="#CDFCAE"> <Polygon Canvas.Left="50" Canvas.Top="50" Points="50,20 300,20 300,160 200,160" Stroke="Green" StrokeThickness="3" Fill="Orange"> </Polygon></Canvas>
每一個(gè)點(diǎn)之間用空格分開(kāi),運(yùn)行后如下所示:
Polyline
Polyline用來(lái)畫(huà)多邊線,與上面的Polygon不同的地方是它不一定要是閉合的,同樣用Points屬性來(lái)指定幾個(gè)特定的點(diǎn),我們定義一個(gè)跟上面的示例一樣的Polyline:
<Canvas Background="#CDFCAE"> <Polyline Canvas.Left="50" Canvas.Top="50" Points="50,20 300,20 300,160 200,160" Stroke="Green" StrokeThickness="3" Fill="Orange"> </Polyline></Canvas>
運(yùn)行后可以看到,有一條邊未閉合:
結(jié)束語(yǔ)
本文內(nèi)容比較簡(jiǎn)單,介紹了Silverlight中的一些基本的圖形。
NET技術(shù):一步一步學(xué)Silverlight :基本圖形,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。