myLabel
サイズが 60x60のラベル (たとえば) があり、その背景をDrawingBrush
. 私のコード:
GeometryGroup testGroup = new GeometryGroup();
testGroup.Children.Add(new RectangleGeometry(new Rect(20, 20, 10, 10)));
//testGroup.Children.Add(new RectangleGeometry(new Rect(40, 40, 10, 10)));
myLabel.Background=new DrawingBrush(
new GeometryDrawing(Brushes.Black, null, testGroup));
3 行目のコメントを外すと、完全に機能します (ラベル内に 2 つの黒い四角が表示されます)。ただし、testGroup
にジオメトリ オブジェクトが 1 つしか含まれていない場合は、myLabel
全体が黒くなります。ブラシを変更しFillRule
たり、null 以外を指定したりしてPen
も、結果には影響しません。
では、ラベルの背景として長方形を 1 つだけ描画するにはどうすればよいでしょうか。ありがとう〜
更新: より多くのソース コード
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
GeometryGroup testGroup = new GeometryGroup();
testGroup.Children.Add(new RectangleGeometry(new Rect(20, 20, 10, 10)));
labelArray[i, j].Background =
new DrawingBrush(
new GeometryDrawing(
Brushes.Black, null, testGroup));
}
}
生成されます:
その間
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
GeometryGroup testGroup = new GeometryGroup();
testGroup.Children.Add(new RectangleGeometry(new Rect(20, 20, 10, 10)));
testGroup.Children.Add(new RectangleGeometry(new Rect(40, 40, 10, 10)));
labelArray[i, j].Background =
new DrawingBrush(
new GeometryDrawing(
Brushes.Black, null, testGroup));
}
}
生成されます:
私が欲しいのはlabelArray[i, j]
、最初のスニペットの元の目標でもある、それぞれに黒い四角が 1 つだけあることです。
更新 2 : @AngelWPF の提案をありがとう:
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
GeometryGroup testGroup = new GeometryGroup();
testGroup.Children.Add(new RectangleGeometry(new Rect(-10, -10, 10, 10)));
testGroup.Children.Add(new RectangleGeometry(new Rect(10, 10, 10, 10)));
DrawingBrush brush = new DrawingBrush(
new GeometryDrawing(Brushes.Black, null, testGroup));
brush.Stretch = Stretch.None;
labelArray[i, j].Background = brush;
}
以下を適切に生成します。
しかし
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
GeometryGroup testGroup = new GeometryGroup();
testGroup.Children.Add(new RectangleGeometry(new Rect(20, 20, 10, 10)));
DrawingBrush brush = new DrawingBrush(
new GeometryDrawing(Brushes.Black, null, testGroup));
brush.Stretch = Stretch.None;
labelArray[i, j].Background = brush;
}
生成されます:
長方形がラベルの中央に間違って配置されています。