我正在使用SkiaSharp在WPF中绘制文本。

http://lostindetails.com/blog/post/SkiaSharp-with-Wpf

https://github.com/8/SkiaSharp-Wpf-Example

如您所见,文字并不清晰。

c# - 在WPF中使用SkiaSharp的模糊文本-LMLPHP

通过将文本与标题中的MainWindow测试进行比较,可以很容易地注意到这一点。

可能是什么问题?

最佳答案

可能是您没有以足够高的分辨率进行渲染。我在SurfaceBook显示器上遇到了这种情况,但在外接显示器上却没有。实际上,您必须创建比实际需要的“更大”的曲面。例如,我的SurfaceBook的缩放比例为300%,因此我必须首先获取窗口的宽度,然后乘以3:

https://github.com/mono/SkiaSharp/blob/master/source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKElement.cs#L57-L61

var m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice;
var dpiX = m.M11;
var dpiY = m.M22;
var width = (int)(ActualWidth * dpiX);
var height = (int)(ActualHeight * dpiY);


无需自己执行此操作,您可以使用NuGet中的预先创建的视图:https://www.nuget.org/packages/SkiaSharp.Views

然后,您可以像下面的示例一样放入SKElement

https://github.com/mono/SkiaSharp/blob/master/samples/WPFSample/WPFSample/MainWindow.xaml#L28

<views:SKElement x:Name="canvas" PaintSurface="OnPaintCanvas" />

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

10-12 06:00