Silverlightのグラフィック
グラフィックス機能に制限があるのは、ブラウザが共通に持つ機能が、ビットストリームを表示することだからだと思います。
セキュリティの問題ではないので用途によっては実現可能なこともあります。
1.BitmapのPixel操作
1.1.WriteableBitmap
Silverlight 3 になって、WriteableBitmap が使えます。
WriteableBitmap には、Invalidate()があります。おそらく、Imageのソースとして最適だと思います。
1.2.無圧縮PNG ストリームによる方法
WriteableBitmap がなかったのでとった手段です。
.Netの標準のイメージ・ファイル形式はPNGです。
ファイル名の拡張子が .bmp でも内容がPNGのこともあります。
調べてみると、PNGには無圧縮な形式があります。
これを使えば、Pixel操作するグラフィックスが可能になります。
実際に、この方法を使ったサンプルです。
左図をクリックすると実行します。
PNGファイル形式のMemoryStreamを作り、このストリームを操作します。
WPFの場合の WriteableBitmapクラスを作り、ImageクラスのSourceプロパティに代入できれば、共通のコーディングになると考えたのですが、Sourceプロパティに代入できる、BimapImageクラスやImageSourceクラスを継承できずに断念しました。
5.2.3D
Silverlight自体には3Dのサポートがなく、いろいろなサンプルでは Kit3D ライブラリが使われているようです
Silverlight の話題ではありませんが、ブラウザは XAML を表示できます。XAML の記述としては3Dは有効です。3Dのジオメトリデータを表示する目的には使えます。
下図は、フレームにXAMLファイルを読み込んで表示しています。球は、3Dのジオメトリで記述されいます。イメージではありません。
(インターネットオプションのセキュリティに Loose XAML を開くことに関する設定があります。)
|