Hello, world! - Silverlight 版

 

Silverlight (XAML) を使用して、ベクタグラフィックスによる「Hello, world!」を作成します。 XAML では、SVG に良く似た構文を使用してベクタグラフィックスを定義できます。

「Hello, world!」にはグラデーションをかけますが、当初考えていた 2通りではなく 1通りだけにします。 これは、Silverlight 1.0 の XAML では、タブのようなリッチコンポーネントがサポートされていないため、 手軽に切り替え表示を実現できないからです(タブなどは Silverlight 2.0 でサポートされる見込みです)。

Silverlight をインストール している方は、実際に動かしてみることができます。 以下に、インストールしていない方のために実行イメージを掲載しておきます。

実行イメージ

Demo

作成と実行

作成

適当なテキストエディタを使用して、hello.xaml を作成します。

hello.xaml
<?xml version="1.0"?>
<Canvas xmlns="http://schemas.microsoft.com/client/2007">
    <Rectangle  Width="350" Height="100" RadiusX="10.0" RadiusY="10.0"
                StrokeThickness="5" Stroke="black" Fill="slateblue" />
    <TextBlock  Canvas.Top="25" Canvas.Left="25" FontSize="40"
                FontFamily="Georgia" FontStyle="Italic" FontWeight="Bold">
        <TextBlock.Foreground>
            <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                <GradientStop Offset="0.1" Color="darkorange" />
                <GradientStop Offset="0.9" Color="yellow" />
            </LinearGradientBrush>
        </TextBlock.Foreground>
        Hello, world!
    </TextBlock>
</Canvas>

実行

通常、Webページに Silverlight コンテンツを埋め込むには、 JavaScript で書かれた補助ファイル(SDK で提供)を使用します。 しかし、本稿では手っ取り早く Silverlight を試すために、 HTML の object 要素を使用します。 hello.xaml の埋め込みは次のようにしています (これは、一例に過ぎません)。

<object type="application/x-silverlight" width="350" height="100">
    <param name="source" value="/usr/2007/167/hello.xaml" />
</object>

XAML を HTML の中に記述

XAML のコードは、HTML の script 要素の中に記述することができます。 以下の例では、上で作成した hello.xaml を一切変更せずに hello.html の中に記述しています。

hello.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<script type="text/xaml" id="hello">
<?xml version="1.0"?>
<Canvas xmlns="http://schemas.microsoft.com/client/2007">
    <Rectangle  Width="350" Height="100" RadiusX="10.0" RadiusY="10.0"
                StrokeThickness="5" Stroke="black" Fill="slateblue" />
    <TextBlock  Canvas.Top="25" Canvas.Left="25" FontSize="40"
                FontFamily="Georgia" FontStyle="Italic" FontWeight="Bold">
        <TextBlock.Foreground>
            <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                <GradientStop Offset="0.1" Color="darkorange" />
                <GradientStop Offset="0.9" Color="yellow" />
            </LinearGradientBrush>
        </TextBlock.Foreground>
        Hello, world!
    </TextBlock>
</Canvas>
</script>
<object type="application/x-silverlight" width="350" height="100">
    <param name="source" value="#hello" />
</object>
</body>
</html>

script 要素の id には hello を設定しています。 object 要素のパラメータでは、source に #hello を設定することにより XAML を参照しています。

更新履歴

日付 内容
2007-12-11 再構成他の RIA ソリューションとの一貫性を確保
2007-12-04 初版