gpt4 book ai didi

c# - 如何在不使用 stroke 属性的情况下绘制椭圆轮廓​​?

转载 作者:行者123 更新时间:2023-11-30 23:00:32 26 4
gpt4 key购买 nike

我真正想要的是一种在 WPF 形状(例如椭圆)上设置负描边粗细值的方法,以便描边轮廓向外绘制到形状的左侧和顶部,而不是在形状内部,覆盖我的书写当我使笔划的想法太粗时的文字...我希望椭圆的半径保持不变,但笔画随着想法的增加而向外增长,并且形状的左侧,顶部位置与内部保持一致填充保持相同的大小,并且不会被笔划覆盖,因为它的大小增加了。

我尝试了 DropShadowEffect,但它有点太模糊而且定义不够清楚......看起来有点乱......真的我只想在形状外部环绕一条实线......

enter image description here

正如您从上面的附图中看到的,我尝试使用下面的代码在两个椭圆周围放置阴影。问题是我希望它在外面是纯色,就像另一个不同颜色的椭圆的比例变换。

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>

转换为 C# 代码并将一个 scaletransform 椭圆放置在另一个不同颜色的缩放变换椭圆的中心...不过不确定如何设置它。

解决方法:

基于以下建议。我尝试创建一个网格,将网格的宽度和高度设置为椭圆的大小,然后将两个椭圆添加到网格中,颜色不同,一个边距设置为 -10。它工作得很好......只需要在将它添加到网格时将边距为 -10 的较大椭圆放在另一个椭圆后面......这就是它现在的样子..

enter image description here

解决方案就在这里:

        g    = new Grid();
e = new Ellipse();
h = new Ellipse();
t = new TextBlock();
t.HorizontalAlignment = HorizontalAlignment.Center;
t.VerticalAlignment = VerticalAlignment.Center;
t.FontWeight = FontWeights.ExtraBold;
g.Children.Add(h);
g.Children.Add(e);
g.Children.Add(t);
gwin.canvas.Children.Add(g);
t.Text = String.Format("{0}.{1}", x, y);
g.Width = gwin.XStep;
g.Height = gwin.YStep;
Canvas.SetLeft (g, gwin.X1 + gwin.XStep*x*2);
Canvas.SetTop (g, gwin.Y1 + gwin.YStep*y*2);
e.StrokeThickness = 2;
e.Stroke = Brushes.Black;

h.Margin = new Thickness(-10);

最佳答案

您可以在网格内使用双椭圆,像这样相互重叠:

<Grid Width="100" Height="100">
<Ellipse Fill="Black" Margin="-10"/>
<Ellipse Fill="Red" />
</Grid>

即使第一个椭圆更大并且渲染超出其边界,这个复合的大小仍然是 100x100。

您也可以 use a Paththen do this

关于c# - 如何在不使用 stroke 属性的情况下绘制椭圆轮廓​​?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51528309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com