#wpf #skiasharp
#wpf #skiasharp
Вопрос:
Я знаю, что SkiaSharp
холст может быть размещен в Grid
приложении Xamarin. Вот несколько примеров (рабочего) кода:
xmlns:skia="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"
<skia:SKCanvasView
x:Name="AUView"
Grid.Row="2"
PaintSurface="AUView_PaintSurface" />
Но когда я пытаюсь сделать подобное в приложении WPF:
xmlns:skia="clr-namespace:SkiaSharp;assembly=SkiaSharp"
<skia:SKCanvas
Name="AUView"
Grid.Row="2"
PaintSurface="AUView_PaintSurface" />
Я получаю сообщение об ошибке:
A value of type 'SKCanvas' cannot be added to a collection or dictionary of type 'UIElementCollection'.
Можно ли поместить SKCanvas
в ячейку сетки в WPF или вся страница должна быть SKCanvas
?
Иначе, как / вы можете использовать SkiaSharp
в WPF?
Комментарии:
Ответ №1:
Во-первых, вы должны установить SkiaSharp.Views.WPF
пакет, который тоже будет установлен автоматически SkiaSharp
. SkiaSharp
Пакет сам по себе не будет содержать необходимый элемент управления WPF, который является SKElement
.
Поскольку это FrameworkElement
, вы можете разместить его в любом месте вашего представления. SKCanvas
не является компонентом, совместимым с WPF. Чтобы использовать SKElement
в вашем XAML, вы должны использовать его пространство имен XML.
xmlns:skia="clr-namespace:SkiaSharp.Views.WPF;assembly=SkiaSharp.Views.WPF"
Затем поместите SKCanvas
элемент управления в любом месте вашего представления.
<skia:SKElement
Name="AUView"
Grid.Row="2"
PaintSurface="AUView_PaintSurface"/>
Комментарии:
1. Хотите верьте, хотите нет, я не видел … Пакет WPF Nuget. Теперь установлено и с помощью примеров, указанных ранее, все это работает. Спасибо.