C# 如何在不使用笔划属性的情况下绘制椭圆的轮廓?
我真正想要的是一种在WPF形状(如椭圆)上具有负笔划厚度值的方法,以便斯托克轮廓朝着形状的左侧和顶部向外绘制,而不是在形状的内部,当我使笔划的厚度过厚时,在我的文本上过度书写。。。我希望椭圆的半径保持不变,但是笔划向外延伸,增加了深度,形状的左侧顶部位置保持连续,内部填充保持相同的大小,并且随着大小的增加不会被笔划覆盖 我试过DropShadowEffect,但它太模糊了,不够清晰…看起来有点凌乱。。。真的,我只是想要一条围绕形状外部的实线 正如你们从上图中看到的,我试图用下面的代码在两个椭圆周围加上阴影。问题是,我希望它是一个围绕外部的纯色,就像另一个不同颜色椭圆的缩放变换C# 如何在不使用笔划属性的情况下绘制椭圆的轮廓?,c#,wpf,C#,Wpf,我真正想要的是一种在WPF形状(如椭圆)上具有负笔划厚度值的方法,以便斯托克轮廓朝着形状的左侧和顶部向外绘制,而不是在形状的内部,当我使笔划的厚度过厚时,在我的文本上过度书写。。。我希望椭圆的半径保持不变,但是笔划向外延伸,增加了深度,形状的左侧顶部位置保持连续,内部填充保持相同的大小,并且随着大小的增加不会被笔划覆盖 我试过DropShadowEffect,但它太模糊了,不够清晰…看起来有点凌乱。。。真的,我只是想要一条围绕形状外部的实线 正如你们从上图中看到的,我试图用下面的代码在两个椭圆
var e = new Ellipse();
DropShadowEffect effect = new DropShadowEffect();
effect.Color =Colors.Orange;
effect.Direction = 0;
effect.BlurRadius = 30;
effect.ShadowDepth = 4;
effect.Opacity=0;
e.Effect = effect;
t.Text = string.Format("abc");
t.Measure(new Size(gwin.XStep, gwin.YStep));
t.Arrange(new Rect(t.DesiredSize));
e.StrokeThickness = 2;
e.Stroke = Brushes.Black;
canvas.Children.Add(e);
canvas.Children.Add(t);
解决问题的另一个可能方向:
<Ellipse RenderTransformOrigin="0.5,0.5">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform/>
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
我觉得有点像边界。或者,您可以绘制一个椭圆,然后再绘制一个具有背景色的较小椭圆。您可以在网格内使用两个椭圆,彼此重叠,如下所示:
<Grid Width="100" Height="100">
<Ellipse Fill="Black" Margin="-10"/>
<Ellipse Fill="Red" />
</Grid>
即使第一个椭圆更大,并在其边界外渲染,该化合物的大小仍为100x100
你也可以,这是一个有趣的想法。。但我不想弄乱数字pi。。。也许有一种方法可以通过缩放变换来实现?边界是可行的,但它不是一个圆…这是一个有趣的想法。。如果我在间距计算中使用较大的椭圆半径。。。啊。。但等一下,你有一个保证金=-10。。。这可能行得通,如果比扬的答案满足了你的需要,你应该和蔼可亲,并将其标记为已回答。我认为比扬的答案是最好的,但我保留它,以防微软决定在未来某个时候添加负面StrokeThickness。。。
<Grid Width="100" Height="100">
<Ellipse Fill="Black" Margin="-10"/>
<Ellipse Fill="Red" />
</Grid>