ビジュアル レイヤー - Windows app development
Windows.UI.Compositionという名前空間あたりに定義されてるAPIがあります。これは、Windows 10で導入された割と低レベルなグラフィック関連のAPIみたいです。C++でがっつりとDirectXみたいなレイヤまで低レベルなレイヤに行かなくても、C#を使ってプログラム出来るのが一応強みみたいですね。
XAMLのレイヤと相互運用するには、Windows.UI.XAML.Hosting.ElementCompositionPreviewというクラスのGetXXXXXやSetXXXXXを使ってごにょっとすればいいみたいです。 例えばCompositionを使って、四角形をパネルに置くコードは以下のようになります。
UWPアプリを作ってMainPage.xamlを以下のようにします。(Button置いただけ)
<Page x:Class="App23.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:App23" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Grid x:Name="LayoutRoot" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Button Content="Move" Click="Button_Click" /> </Grid> </Page>
そしてButtonのClickイベントハンドラに以下のようなコードを書くことで赤い四角形が表示されます。
var c = ElementCompositionPreview.GetElementVisual(this.LayoutRoot).Compositor; var v = c.CreateSpriteVisual(); v.Brush = c.CreateColorBrush(Color.FromArgb(255, 255, 0, 0)); v.Size = new System.Numerics.Vector2(100, 100); ElementCompositionPreview.SetElementChildVisual(this.LayoutRoot, v);
これだけだとあんまりうれしくないね!