开发者

How to change the stroke style?

Consider this code:

Ellipse myCircle = new Ellipse();
myCircle.Width = 400;
myCircle.Height = 400;
myCircle.Stroke = Brushes.PeachPuff;
myCircle.StrokeThickness = 25;
myCircle.ToolTip = "Bold Circle";
Canvas.SetTop(myCircle, 0);
Canvas.SetLeft(myCircle, 0);
canvas.Children.Add(myCircle);

Ellipse myCircle2 = new Ellipse();
myCircle2.Width = 400;
myCircle2.Height = 400;
myCircle2.Stroke = Brushes.Black;
myCircle2.StrokeThickn开发者_运维知识库ess = 1;
Canvas.SetTop(myCircle2, 0);
Canvas.SetLeft(myCircle2, 0);
canvas.Children.Add(myCircle2);

I see that myCircle2 lying at the edge of myCircle. How can I define the stroke style of myCircle such that myCircle2 will lie in the middle of myCircle ?

Thanks !


There're several ways: one is this (in XAML)

<Canvas>  
<Ellipse Width="400" Height="400"  Stroke="PeachPuff" StrokeThickness="25" />
<Ellipse Width="375" Height="375"  Stroke="Black" StrokeThickness="1" Margin="12.5 12.5 0 0" />


Try this as a general case:

        int diameter = 400;
        int thickness = 25;

        Ellipse myCircle = new Ellipse();
        myCircle.StrokeThickness = thickness;
        myCircle.Width = diameter + thickness;
        myCircle.Height = diameter + thickness;
        myCircle.Stroke = Brushes.PeachPuff;
        myCircle.ToolTip = "Bold Circle";
        Canvas.SetTop(myCircle, -thickness/2);
        Canvas.SetLeft(myCircle, -thickness / 2);
        canvas.Children.Add(myCircle);

        Ellipse myCircle2 = new Ellipse();
        myCircle2.Width = diameter;
        myCircle2.Height = diameter;
        myCircle2.Stroke = Brushes.Black;
        myCircle2.StrokeThickness = 1;
        Canvas.SetTop(myCircle2, 0);
        Canvas.SetLeft(myCircle2, 0);
        canvas.Children.Add(myCircle2);

The adjustment here is to accommodate the thickness of your bold circle by adjusting the width, height in the positive direction and adjusting the top and left in the negative direction by half to recenter.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜