VisualBrush, Key input to 3D

Windows Presentation FoundationのBrushはかなり強力で、ほとんど何でも塗りつぶしに使えます。たとえば、画像ならImageBrush、ビデオならVideoBrush、ベクトル グラフィックスならDrawingBrushが使えますし、それ以外にもキー入力を別の矩形などに表示したいときなどは、そのFillプロパティにVisualBrushを使えば実現できます。

<TextBox Grid.Column="0" Grid.Row="0" x:Name="myInput"  Text="キー入力" />
...

<Rectangle Width="300" Height="100" >
    <Rectangle.Fill>
      <VisualBrush>
        <VisualBrush.Visual>
          <TextBlock Text="{Binding ElementName=myInput, Path=Text}" Background="Red" Width="100"/>
        </VisualBrush.Visual>
     </VisualBrush>
    </Rectangle.Fill>
</Rectangle>

実は、このVisualBrushはGeometryModel3Dのマテリアルとしても使えます。つまり、3Dオブジェクトにキー入力を表示させることができます。別にキー入力だけではなく、何らかのテキストデータを3Dオブジェクトに表示させる際にも同じ手法が使えます。

  <GeometryModel3D.Material>
  <DiffuseMaterial>
      <DiffuseMaterial.Brush>
        <VisualBrush>
          <VisualBrush.Visual>
            <TextBlock Text="{Binding ElementName=myInput, Path=Text}" Background="Red" Width="100" />
          </VisualBrush.Visual>
        </VisualBrush>
      </DiffuseMaterial.Brush>
     </DiffuseMaterial>
  </GeometryModel3D.Material>

添付のXAMLファイルは3Dに入力テキストを表示させたlooseXAMLです。

VisualBrush.xaml