我正在使用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>

===============>>#1 票数:2

问题是您使用的是网格,但是设置了画布属性,可以将画布添加到网格中并在画布上绘制椭圆(将其添加到画布子级),然后它将起作用。

或者,您可以使用椭圆的Margin属性设置其在网格上的位置

===============>>#2 票数:1

Canvas.Left和Canvas.Top是附加属性:仅当UI元素将包含在Canvas中时,才设置它们; 并且只有当它在画布上时,才会使用这些属性(由画布布局管理器使用)。 与Grid的附加属性相同(例如Grid.Column告诉Grid父级UI元素“想要”位于哪一列),Panel(Panel.ZIndex告诉Panel父级UI元素应放置在哪个z索引处) )等

  ask by confusednerd translate from so

未解决问题?本站智能推荐:

1回复

WPF椭圆裁剪

当大小达到特定阈值时,椭圆对象剪切出现问题。 我已经战斗了几个小时,似乎无法找出问题所在。 任何帮助,将不胜感激。 这是下面的椭圆的XAML代码:
1回复

WPF MultiBinding椭圆填充

我无法在Ellipse.Fill上获得MultiBinding 。 我确实有(单个)绑定工作正常,加上Ellipse.Tooltip上的MultiBinding : 但我想要这样的东西: (显然, statusButtonConverter需要从IValueConverter更
3回复

WPF绑定以更改椭圆的填充颜色

可能是一个简单的问题但是: 如何以编程方式更改基于变量在XAML中定义的椭圆的颜色? 我读到的关于绑定的所有内容都基于集合和列表 - 我不能简单地(和字面上)基于字符串变量的值来设置它吗? string color =“red”color =“#FF0000”
1回复

WPF创建各个块的虚线椭圆

是否有任何简单的方法来创建由单独的水平破折号组成的虚线椭圆,其中破折号大小是一致的,并且可以指定它们的数量? 像这样的东西: 我希望能够单独控制每个短划线,例如更改其颜色或将其绑定到我的viewmodel中的操作。 我能想到实现这一目标的唯一方法是创建一个自定义控件,其中
1回复

椭圆在画布上未显示(通过将它们添加为子对象而显示),但在XAML中添加时会显示

如标题所示,我的应用程序中有一个wiimote,它提供了需要显示椭圆的像素坐标。 但是问题是,当我使用Canvas.Children.Add()添加它们时,它们没有出现在画布上。 但是,如果我使用XAML在画布中添加了椭圆,然后每次遥控器提供新的x,y坐标时都修改了它们的坐标,则椭圆会出
2回复

根据百分比填充椭圆

我已经在XAML中创建了Ellipse。 这是代码: 假设“椭圆”为100%,前提是蓝色只能填充到20%,然后在椭圆的中心(空白区域)显示百分比文本。 编辑 我添加了要显示在中心的文本。 编辑2 这是我想要达到的效果: 这里是20%填充的橙色。
2回复

使一个按钮看起来像一个椭圆,然后绑定它的颜色

这是我的XAML样式,其中Button看起来像一个椭圆。 我还用钥匙制作了颜色,以便我可以更改甚至绑定它(没有运气)。 绑定的问题是我没有与DataContent绑定的名称。 我试图在C# Player1 = new Style(typeof(Button)); Player1.Se
2回复

WPF Ellipse切掉顶部和底部

我需要绘制一个类似于我的示例的椭圆形(或其他形状吗?)(大致画出我的意思) 有什么建议如何发展呢? 我尝试过Clip,但是我只能剪掉顶部或底部(或者我做错了吗?) 最好是如果它是一个圆圈,则可以动态地将大小更改为内容 谢谢马库斯
1回复

在C#WPF中向移动椭圆添加文本

我在C#,WPF中有一个程序。 我有一个画布,并且在画布上存在许多随机移动的椭圆。 我可以向每个椭圆添加文本,例如椭圆的位置吗?
1回复

WPF使用椭圆进步

对使用椭圆显示进度感到好奇,可能是因为进度栏使用IsIndeterminate。 我将使用椭圆,其中颜色或不透明度会产生从左向右移动的效果,但是椭圆控件而不是出售的条形,而是散开了。 我并不是在寻找一个可行的例子,只是希望以最佳方式寻求指导。