0

Canvas複数のとをGridView追加すると がRectangleありImagesます。私が欲しいのは、長方形と画像を重ねて1つに見せることです。

Rectangles と Images に対してほぼ同じコードを書きましたが、何らかの理由でそれらをまとめていません。

コードは次のとおりです。

        for (int i = 0; i < 8; i++)
        {
            for (int j = 0; j < 8; j++)
            {

                rect = new Rectangle();

                rect.Height = canvas1.Height / 8;
                rect.Width = canvas1.Width / 8;

                th = new Thickness((i * canvas1.Height / 8) + 10, (j * canvas1.Width / 8) + 10, 0, 0);
                rect.Margin = th;

                rect.Visibility = Visibility.Visible;
                canvas1.Children.Add(rect);
             }
         }

Image のコードも同様ですが、canvas1 の代わりに Grid を使用しています。画像を長方形に重ねるには、どのような変更を行う必要がありますか?

4

1 に答える 1

0

おそらく、8 行と 8 列の Grid を定義してから、長方形と画像の行インデックスと列インデックスを設定する必要があります。

<Grid Name="grid">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Rectangle Grid.Column="0" Grid.Row="0" Fill="Red"/>
    <Image Grid.Column="0" Grid.Row="0" Name="image00" />
    ... more rectangles and images ...
</Grid>

オプションWidthで、各 ColumnDefinition および各 RowDefinition の を設定できますHeight

コントロールをグリッドに動的に追加する必要がある場合は、次のようにします。

Image image = ...
int column = ...
int row = ...
Grid.SetColumn(image, column);
Grid.SetRow(image, row);
grid.Children.Add(image);

また、Canvas は、その子を配置するためのLeftTopRight、およびBottomプロパティを提供します。コードで行うように Margins を設定する代わりに、通常は and を設定LeftTopます。

Canvas.SetLeft(child, left);
Canvas.SetTop(child, top);
于 2012-08-19T11:22:51.297 に答える