1

私は WPF を使用しており、グリッドに楕円を動的/プログラム的に追加する際に問題があります。

myGrid内に楕円を動的に割り当てて配置しています。問題は、楕円の位置が変わらないことです。Canvas.SetLeft と SetTop を使用していますが、楕円がまだ動かないようです。

動的割り当てのコードは次のとおりです。

{
...

       Ellipse el = new Ellipse();
                    RadialGradientBrush b = new RadialGradientBrush();
                    b.RadiusX = r * 10.0f;
                    b.RadiusY = r * 10.0f;
                    b.GradientOrigin = new Point(0.5f, 0.5f);
                    b.GradientOrigin = new Point(0.5f, 0.5f);
                    b.GradientStops.Add(new GradientStop(Colors.Green, 0.0));
                    b.GradientStops.Add(new GradientStop(Colors.Blue, 1.0));
                    el.Width = 5.0f + r * 20.0f;
                    el.Height = 5.0f + r * 20.0f;
                    el.Stroke = b;
                    SetEllipsePosition(el, p);
 this.myGrid.Children.Add(el);

...


}
        private void SetEllipsePosition(FrameworkElement ellipse, Point j)
        {
            Canvas.SetLeft(ellipse, j.X);
            Canvas.SetTop(ellipse, j.Y);
        }





                    <Grid Height="480" Name="myGrid" Width="640">
                        <GroupBox Header="Pattern" Height="117" HorizontalAlignment="Left" Margin="10,564,0,0" Name="groupBox1" VerticalAlignment="Top" Width="238"></GroupBox>

                        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="33,30,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click_1" />
                        <Grid Margin="6,507,408,-121">
                            <RadioButton Content="Lines" Height="16" HorizontalAlignment="Left" Margin="15,18,0,0" Name="rbLines" VerticalAlignment="Top" GroupName="RenderStyles" />
                            <RadioButton Content="Circles" Height="16" HorizontalAlignment="Left" Margin="15,49,0,0" Name="rbCircles" VerticalAlignment="Top" GroupName="RenderStyles" />
                        </Grid>
                    </Grid>
4

2 に答える 2

3

問題は、グリッドを使用しているが、キャンバスのプロパティを設定している場合、キャンバスをグリッドに追加し、キャンバスに楕円を描画して(それらをキャンバスの子に追加して)、それが機能することです。

または、楕円の Margin プロパティを使用して、グリッド上の位置を設定できます

于 2011-12-11T21:19:20.000 に答える
1

Canvas.Left と Canvas.Top は添付プロパティです。これらは、UI 要素が Canvas に含まれる場合にのみ設定します。Canvas 上にある場合にのみ、これらのプロパティが使用されます (Canvas レイアウト マネージャーによって)。Grid の添付プロパティ (UI 要素が「必要な」列を Grid.Column に伝えるなど)、Panel (Panel.ZIndex に UI 要素を配置する z インデックスを Panel の親に伝える) と同じです。 )など

于 2011-12-12T01:51:23.530 に答える