将动态生成的项目放置在按钮周围的圆圈中 - c#

我正在创建一个Silverlight应用程序,必须在其中动态创建按钮。但是我需要将它们放置在我单击的按钮周围的圆圈中,以生成其他按钮(图片here,这些按钮应位于“测试项目”按钮周围的黑线上)

我不知道每次都会生成多少个按钮,但是我知道每个按钮的大小都是静态的。我不太确定该怎么做。目前我的按钮创建如下

                foreach (Item a in itemList)
                {
                    Button newButton = new Button();
                    newButton.Height = 50;
                    newButton.Width = 50;
                    newButton.Content = a.getName();
                    newButton.Click += new RoutedEventHandler(addedClick);
                    newButton.HorizontalAlignment = HorizontalAlignment.Left;
                    newButton.VerticalAlignment = VerticalAlignment.Top;
                    newButton.Margin = new Thickness(0, 0, 0, 0);
                    newButton.Style = (Style)Application.Current.Resources["RB"];
                    buttons.Add(newButton);
                }

我最大的问题是我不太确定如何获取“测试项目”按钮的中心点。

编辑:好的,现在我对每个按钮都有一组坐标,我该如何准确地放置它们?我不确定如何使用画布。我尝试设置一个,但是它一直像堆栈面板一样工作(没有.setLeft / .setTop)。

参考方案

您的意思类似于圆方程:

Double distanceFromCenter = 5;
Double angleInDegrees = 90;
Double angleAsRadians = (angleInDegrees* Math.PI) / 180.0;
Double centerX = 100;
Double centerY = 100;

Double x = centerX +  Math.Cos(angleAsRadians) * distanceFromCenter;
Double y = centerY + Math.Sin(angleAsRadians) * distanceFromCenter;

这会给您一个距distanceFromCenter单位(centerX, center)的点,在90度的angle上。请注意,这仅适用于弧度,因此我们必须转换为弧度。

Math.log无法正常工作-为什么? - java

//以下方法无法正常工作,我不确定为什么。日志结果不正确。 0.5返回日志值-0.6931471805599453,但是我的计算器显示它应该返回-3.3。public static void printCommonLogTable() { double x = 0; while (x <= 10) { System.out.println (x+ &#…

Silverlight:如何动态创建页面 - c#

问题:我将要在Silverlight中打开的页面名称存储在数据库中。启动应用程序时,我想将页面设置为此字符串所以而不是这样:this.RootVisual = new MainPage(); 我想要这样的东西string pageName = getValueFromDatabase() if (!PageExists(pageName)) throw er…

Math.max和Math.min输出允许的最高和最低值 - java

所以我正在尝试制作一个程序,该程序将输出总和,平均值以及最小和最大值。除了最小和最大值输出2147483647和-2147483647,我基本上已经弄清楚了所有东西,我相信这是Java将计算的绝对最小和最大值。无论如何,我想计算用户输入的数字,因此这显然是不正确的。这是我的课。我认为addValue方法出了问题。public class DataSet { …

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解统计城市的所有灯泡

这个是我刚毕业的时候,一个真实的面试题,这是一个开放题。题目描述:想办法,将一个城市的所有灯泡数量统计出来。题解:费米估算法1、如果某个城市常驻人口有1000万2、假设每5人居住在一套房里,每套房有灯泡5只,那么住宅灯泡共有1000万只3、假设公众场所每10人共享一只灯泡,那么共有100万只4、主要的这两者相加就得出了1100万只当然实际上这是估算的,具体应…