Silverlight は、Ellipse、Rectangle、Line、Polyline、Polygon、および Path 要素を提供することで、ベクタグラフィックをサポートしています。 これらの要素を総称して、図形要素(shape elements)と呼びます。 このドキュメントは、以下のセクションで構成されます。 基本的な図形Silverlight は、Ellipse(楕円)、Rectangle(長方形)、Line(線)という、3 つの基本的な図形要素を提供しています。
以下の例は、Canvas において Ellipse、Rectangle、Line をひとつずつ描画します。 [hide XAML] <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Ellipse Height="200" Width="200" Canvas.Left="30" Canvas.Top="30" Stroke="Black" StrokeThickness="10" Fill="SlateBlue"/> <Rectangle Height="100" Width="100" Canvas.Left="5" Canvas.Top="5" Stroke="Black" StrokeThickness="10" Fill="SlateBlue"/> <Line X1="280" Y1="10" X2="10" Y2="280" Stroke="black" StrokeThickness="5"/> </Canvas> [hide] [restart] その他の図形要素Ellipse、Line、Rectangle 要素に加えて、Silverlight は、Polygon、Polyline、Path という 3 つの図形要素を提供しています。 Polygon は任意の数の辺をもつ閉じた図形であり、Polyline は、閉じた図形であるかどうかに関係ない連続した線をあらわします。 以下の例は、Polygon と Polyline を作成しています。 [hide XAML] <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Polyline Points="150, 150 150, 250 250, 250 250, 150" Stroke="Black" StrokeThickness="10"/> <Polygon Points="10,10 10,110 110,110 110,10" Stroke="Black" StrokeThickness="10" Fill="LightBlue"/> </Canvas> [hide] [restart] Path 要素は、カーブや円弧を含む複雑な図形をあらわすためにも使われます。Path 要素を使うためには、特殊な属性の構文を使って Data プロパティを設定します。 [hide XAML] <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Path Data="M0,0 L11.5,0 11.5,30 5.75,40 0,30z" Stroke="Black" Fill="SlateBlue" Canvas.Left="10" Canvas.Top="10" /> <Path Data="M 10,100 C 10,300 300,-200 250,100z" Stroke="Red" Fill="Orange" Canvas.Left="10" Canvas.Top="10" /> <Path Data="M 0,200 L100,200 50,50z" Stroke="Black" Fill="Gray" Canvas.Left="150" Canvas.Top="70" /> </Canvas> [hide] [restart] Path マークアップの構文に関する詳細は、Silverlight SDK の Path Markup Syntax をご覧ください。 ブラシを使った図形の塗りつぶしほとんどの図形は、ストローク(輪郭)とフィル(塗りつぶす領域)という 2 つの部分で構成されており、 これらは Stroke と Fill プロパティで制御できます。 以下の図は、最初の例における Rectangle のストロークとフィルにラベルをつけたものです。
すべての図形がフィルとストロークを持つわけではありません。Line はストロークだけを持ちます。 Line の Fill プロパティを設定しても、何も起きません。 Stroke と Fill にはブラシを設定できます。 使えるブラシには以下の種類があります。
SolidColorBrush を使って単色で塗りつぶす領域を単色で塗りつぶすためには、SolidColorBrush を使います。 XAML は、SolidColorBrush を作成する方法はいくつかあります。
以下の例は、オブジェクトを黒に塗りつぶすいくつかの方法を示しています。 [hide XAML] <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Ellipse Height="90" Width="90" Canvas.Left="10" Canvas.Top="10" Fill="black"/> <!-- SolidColorBrush by color name. --> <Ellipse Height="90" Width="90" Canvas.Left="110" Canvas.Top="10" Fill="#000000"/> <!-- SolidColorBrush by 6-digit hexadecimal notation. --> <Ellipse Height="90" Width="90" Canvas.Left="10" Canvas.Top="110" Fill="#ff000000"/> <!-- SolidColorBrush by 8-digit hexadecimal notation. --> <Ellipse Height="90" Width="90" Canvas.Left="110" Canvas.Top="110"> <Ellipse.Fill> <!-- SolidColorBrush by object element syntax. --> <SolidColorBrush Color="Black"/> </Ellipse.Fill> </Ellipse> </Canvas> [hide] [restart] LinearGradientBrush と RadialGradientBrush を使ったグラデーションによる塗りつぶしSilverlight は、線状と放射状の両方のグラデーションをサポートしています。 グラデーションは、一つ以上のグラデーションの異なる色を記したグラデーション基準位置(gradient stop)を持ち、 その間を色が遷移します。 ほとんどのグラデーションは、2つの基準位置だけで十分ですが、必要に応じてたくさんの基準位置を追加できます。
グラデーションブラシに基準位置を追加するには、GradientStop オブジェクトを作成します。 GradientStop の Offset プロパティを 0 から 1 の間に設定することで、グラデーションの相対的な位置を設定できます。 GradientStop の Color は色の名前か16進値を指定します。 以下の例は、LinearGradientBrush と RadialGradientBrush オブジェクトを使って、 4 つの Rectangle(長方形)オブジェクトを塗りつぶしています。 [hide XAML] <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <!-- Linear gradients --> <Rectangle Width="140" Height="70" Canvas.Left="10" Canvas.Top="10"> <Rectangle.Fill> <LinearGradientBrush> <GradientStop Color="Yellow" Offset="0.0" /> <GradientStop Color="Red" Offset="0.25" /> <GradientStop Color="Blue" Offset="0.75" /> <GradientStop Color="LimeGreen" Offset="1.0" /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> <Rectangle Width="140" Height="70" Canvas.Left="155" Canvas.Top="10"> <Rectangle.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> <GradientStop Color="Yellow" Offset="0.0" /> <GradientStop Color="Red" Offset="0.25" /> <GradientStop Color="Blue" Offset="0.75" /> <GradientStop Color="LimeGreen" Offset="1.0" /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> <!-- Radial gradients --> <Rectangle Width="140" Height="70" Canvas.Left="10" Canvas.Top="110"> <Rectangle.Fill> <RadialGradientBrush> <GradientStop Color="Yellow" Offset="0.0" /> <GradientStop Color="Red" Offset="0.25" /> <GradientStop Color="Blue" Offset="0.75" /> <GradientStop Color="LimeGreen" Offset="1.0" /> </RadialGradientBrush> </Rectangle.Fill> </Rectangle> <Rectangle Width="140" Height="70" Canvas.Left="155" Canvas.Top="110"> <Rectangle.Fill> <RadialGradientBrush GradientOrigin="1,0"> <GradientStop Color="Yellow" Offset="0.0" /> <GradientStop Color="Red" Offset="0.25" /> <GradientStop Color="Blue" Offset="0.75" /> <GradientStop Color="LimeGreen" Offset="1.0" /> </RadialGradientBrush> </Rectangle.Fill> </Rectangle> </Canvas> [hide] [restart] 図形の Stroke を塗りつぶすためにも、グラデーションが使えます。 以下の図は、前の例において最初の LinearGradientBrush のグラデーション基準位置を強調しています。
ImageBrush を使ってイメージで塗りつぶすもうひとつのブラシが ImageBrush です。 デフォルトでは、イメージは図形全体に合わせて伸縮されますが、Stretch プロパティを使って ブラシがイメージをどのように扱うかを制御できます。 以下の例は、2 つの ImageBrush オブジェクトで Stretch を変えて 2 つの Rectangle を塗りつぶしています。 [hide XAML] <Canvas Width="300" Height="300" xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="White"> <Rectangle Height="180" Width="90" Canvas.Left="10" Canvas.Top="10" Stroke="Black" StrokeThickness="1"> <Rectangle.Fill> <ImageBrush ImageSource="star.png"/> </Rectangle.Fill> </Rectangle> <Rectangle Height="180" Width="90" Canvas.Left="110" Canvas.Top="10" Stroke="Black" StrokeThickness="1"> <Rectangle.Fill> <ImageBrush ImageSource="star.png" Stretch="Uniform"/> </Rectangle.Fill> </Rectangle> </Canvas> [hide] [restart] 次のステップほぼすべての UI 要素では、RenderTransform プロパティを使って図形を拡大したり、 回転したり、変形できます。 詳細な情報については、次のトピック、汎用的なグラフィックプロパティ をご覧ください。 Copyright © 2007 Microsoft Corporation. All rights reserved. 使用条件. |