2017-01-25 5 views
1

Я использую SkiaSharp для рисования текста в WPF.Размытый текст с помощью SkiaSharp в WPF

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

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

Как вы можете видеть текст не является точной.

enter image description here

Вы можете легко заметить, что, сравнивая текст с тестом MainWindow в названии, которое является острым.

В чем может быть проблема?

+1

Довольно легко видеть, когда вы приближаетесь к растровым изображениям. В названии окна используется сглаживание ClearType, по умолчанию для компании, которая делает настольные операционные системы. Текст окна визуализируется с помощью сглаживания в сером цвете, по умолчанию для компании, которая делает мобильные операционные системы. Кошки и уродливые собаки. [Отметьте это] (https://github.com/mono/SkiaSharp/issues/141). –

+0

Спасибо, Ханс. Я все еще пытаюсь найти решение. – Vahid

ответ

2

Скорее всего, вы не делаете рендеринг с достаточно высоким разрешением. Я испытываю это на дисплее 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" /> 
+0

Привет, Мэтью, спасибо за хорошие новости. Я загрузил последнюю версию из git, но я не могу построить свое решение. Тип SK3dView не найден. – Vahid

+1

Скорее просто загрузите образцы из: https://github.com/mono/SkiaSharp/releases/tag/v1.56.0. Ведущая ветка нестабильна, используйте тег v1.56.0, если вы хотите построить – Matthew

+0

Спасибо Мэтью. Я буду смотреть на них, когда я буду дома. Skia выглядит многообещающе. Надеюсь, я смогу заставить его работать. – Vahid

Смежные вопросы