gpt4 book ai didi

c# - WPF 中的模糊转换文本

转载 作者:太空狗 更新时间:2023-10-30 01:04:31 26 4
gpt4 key购买 nike

我正在使用 DrawingContext.DrawTextDrawingContext.PushTransfrom 在 WPF 的可视层上创建旋转文本,但如下图所示,旋转文本是在图像的某些区域相当模糊..

我可以使用任何选项来改进它吗? Arial 字体用于文本。

enter image description here

public class BeamTextDrawing : FrameworkElement
{
private readonly VisualCollection _visuals;
public BeamTextDrawing(double scale)
{
if (scale <= 0)
{
scale = 1;
}
var typeface = Settings.BeamTextTypeface;
var cultureinfo = Settings.CultureInfo;
var flowdirection = Settings.FlowDirection;
var textsize = Settings.BeamTextSize / scale;
var beamtextcolor = Settings.InPlanBeamTextColor;

_visuals = new VisualCollection(this);

foreach (var beam in Building.BeamsInTheElevation)
{
var drawingVisual = new DrawingVisual();
using (var dc = drawingVisual.RenderOpen())
{
var text = Convert.ToString(beam.Section.Id);
//text = scale.ToString();
var ft = new FormattedText(text, cultureinfo, flowdirection,
typeface, textsize, beamtextcolor)
{
TextAlignment = TextAlignment.Center
};

var x1 = beam.ConnectivityLine.I.X;
var y1 = beam.ConnectivityLine.I.Y;
var x2 = beam.ConnectivityLine.J.X;
var y2 = beam.ConnectivityLine.J.Y;

var v1 = new Point(x2, y2) - new Point(x1, y1);
var v2 = new Vector(1, 0);

var hwidth = textsize;
var l = Geometrics.GetOffset(x1, y1, x2, y2, hwidth + 5/scale);

var angle = Vector.AngleBetween(v1, v2);
var x = 0.5 * (l.X1 + l.X2);
var y = 0.5 * (l.Y1 + l.Y2);

var r = new RotateTransform(angle, x, SelectableModel.FlipYAxis(y));
dc.PushTransform(r);
dc.DrawText(ft, SelectableModel.FlipYAxis(x, y));
}
_visuals.Add(drawingVisual);
}
}

protected override Visual GetVisualChild(int index)
{
return _visuals[index];
}

protected override int VisualChildrenCount
{
get
{
return _visuals.Count;
}
}
}

更新:

这是使用这段代码后的图像:

TextOptions.SetTextFormattingMode(this, TextFormattingMode.Display);

我仍然得到模糊的结果。查看图像下部的中间横梁文本。

enter image description here

最佳答案

您可以更改 TextFormattingMode防止文本模糊:

public BeamTextDrawing(double scale)
{
TextOptions.SetTextFormattingMode(this, TextFormattingMode.Display);
// .. Your other code

关于c# - WPF 中的模糊转换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947571/

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