我正在創建一個可以繪製角度的控件。我有三個依賴對象。如何繪製三點角度的弧線?
- 半徑:行
- 由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