ソースコード
App.xaml
<Application x:Class="HelloWorld.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml"> </Application>
MainWindow.xaml
<Window x:Class="HelloWorld.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Rectangle Name="rect" /> </Window>
MainWindow.xaml.cs
using System.Windows; using System.Windows.Media; namespace HelloWorld { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // 全ての描画で共有する四角形 GeometryDrawing toShare = new GeometryDrawing( Brushes.Yellow, null, new RectangleGeometry(new Rect(4, 4, 30, 30))); DrawingGroup main = new DrawingGroup(); // 1つ目の四角形 DrawingGroup a = new DrawingGroup(); a.Children.Add(toShare); a.Transform = new TranslateTransform(0, 0); // 2つ目の四角形を少しずらす DrawingGroup b = new DrawingGroup(); b.Children.Add(toShare); b.Transform = new TranslateTransform(16, 16); main.Children.Add(b); main.Children.Add(a); // 2つの四角形を敷き詰める DrawingBrush brush = new DrawingBrush(); brush.Drawing = main; brush.Viewport = new Rect(0, 0, 20, 20); brush.ViewportUnits = BrushMappingMode.Absolute; brush.TileMode = TileMode.Tile; rect.Fill = brush; } } }
参考
GeometryDrawing クラス (System.Windows.Media)
指定した Brush および Pen を使用して、Geometry を描画します。
Geometry クラス (System.Windows.Media)
この抽象基本クラスから派生するクラスは、幾何学図形を定義します。 Geometry オブジェクトは、2-D グラフィックス データのクリッピング、ヒット テスト、およびレンダリングに使用できます。
DrawingGroup クラス (System.Windows.Media)
1 つの描画として操作できる描画のコレクションを表します。
TranslateTransform クラス (System.Windows.Media)
2-D の x-y 座標系内にあるオブジェクトを変換 (移動) します。