相关疑难解决方法(0)

在DrawText中设置VerticalAlignment

我正在使用Visual Layer DrawText进行绘制FormattedText.现在我使用下面的代码来定义格式化的文本,我可以设置TextAlignmentCenter.但是VerticalAlignment呢?如下图所示,文本中心不在中心点,此处显示红点.

我正在定义的部分FormattedText:

var ft = new FormattedText("A",
    CultureInfo.GetCultureInfo("en-us"),
    FlowDirection.LeftToRight,
    new Typeface("Verdana"),
    36, Brushes.Yellow);

ft.TextAlignment = TextAlignment.Center;
Run Code Online (Sandbox Code Playgroud)

我正在绘制文本的部分:

var centerpoint = new Point(0,0);
dc.DrawText(ft, centerpoint);
Run Code Online (Sandbox Code Playgroud)

这是最终结果:

在此输入图像描述

我希望文本的中间位于圆圈的中心.

c# wpf vertical-alignment drawtext

6
推荐指数
1
解决办法
1412
查看次数

如何围绕圆圈定位标签?

我正在试图弄清楚如何计算圆周围的文字标签的位置.这比你第一次阅读时想象的要复杂得多.

我得到了基础知识:

X = ptCenter.X + (dRadius * Math.Cos(dAngle * Math.PI / 180.0))
Y = ptCenter.Y + (dRadius * Math.Sin(dAngle * Math.PI / 180.0))
Run Code Online (Sandbox Code Playgroud)

那么,这将给出我在圆角dAngle上的点与半径dRadius.当然,DrawText(任何种类,但我特别使用DrawingContext.DrawText,如果这对你的答案有任何不同)绘制时给定的点作为文本的左上角.

问题是,这不是绘制文本的正确位置.以下是该问题的说明:

https://support.office.com/en-us/article/Present-your-data-in-a-radar-chart-16e20279-eed4-43c2-9bf5-29ff9b10601d

Jan水平居中于点2月从左下角绘制,而Mar似乎是水平中间的那种4月垂直居中等等.

标签不是以统一的方式定位在点周围.它取决于你绘制的角度.

我需要绘制的标签数量可能会有所不同,因此硬编码软糖因素已经出来了.我需要绘制的角度也可以变化,因此也没有任何软糖因素.所有这一切都必须在飞行中计算.

看起来好像0,90,180,270是特殊情况,而其他似乎是在点周围垂直半中心,但根据你所谈论的圆圈的哪一边向右或向左绘制?

我在这里走在正确的轨道上吗?或者是否有"已知"算法?

谢谢.

c# wpf

5
推荐指数
2
解决办法
966
查看次数

标签 统计

c# ×2

wpf ×2

drawtext ×1

vertical-alignment ×1