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.
精彩评论