我正在创建一个可以绘制角度的控件。我有三个依赖对象。如何绘制三点角度的弧线?
- 半径:行
- 由startAngle的长度:从什么程度我应该开始
- 角度
下面是截图有关该计划目前吸引(红线是什么我试图画)。
所以我还没有完成是圆弧。我需要一些帮助来绘制它。这是我的。
public class AngleControl2 : Control
{
static AngleControl2()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(AngleControl2), new FrameworkPropertyMetadata(typeof(AngleControl2)));
}
public double Angle
{
get { return (double)base.GetValue(AngleProperty); }
set { base.SetValue(AngleProperty, value); }
}
public static readonly DependencyProperty AngleProperty =
DependencyProperty.Register("Angle", typeof(double), typeof(AngleControl2), new PropertyMetadata(90.0, new PropertyChangedCallback(AngleChanged)));
public double StartAngle
{
get { return (double)base.GetValue(StartAngleProperty); }
set { base.SetValue(StartAngleProperty, value); }
}
public static readonly DependencyProperty StartAngleProperty =
DependencyProperty.Register("StartAngle", typeof(double), typeof(AngleControl2), new PropertyMetadata(0.0, new PropertyChangedCallback(AngleChanged)));
public double Radius
{
get { return (double)base.GetValue(RadiusProperty); }
set { base.SetValue(RadiusProperty, value); }
}
public static readonly DependencyProperty RadiusProperty =
DependencyProperty.Register("Radius", typeof(double), typeof(AngleControl2), new PropertyMetadata(100.0));
static void AngleChanged(DependencyObject property, DependencyPropertyChangedEventArgs args)
{
AngleControl2 c = (AngleControl2)property;
Line line1 = c.GetTemplateChild("PART_Line1") as Line;
Line line2 = c.GetTemplateChild("PART_Line2") as Line;
if (line1 != null)
{
line1.X2 = Math.Cos((c.StartAngle + c.Angle) * (Math.PI/180)) * c.Radius;
line1.Y2 = Math.Sin((c.StartAngle + c.Angle) * (Math.PI/180)) * c.Radius;
}
if (line2 != null)
{
line2.X2 = Math.Cos(c.StartAngle * (Math.PI/180)) * c.Radius;
line2.Y2 = Math.Sin(c.StartAngle * (Math.PI/180)) * c.Radius;
}
}
}
感谢您对H.B.看起来很混乱的Point和Size属性,你能否在我的解决方案中提供示例代码来启动? – 2012-07-11 21:42:47
不,我不能,那就是为什么我说你应该阅读文档,这是令人困惑的,我知道。我认为大小是圆*如果要完全绘制*的边界框,所以它应该是两个方向上半径的两倍。 – 2012-07-11 21:44:15