Можно ли использовать SkiaSharp в приложении WPF?

#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. github.com/mono/SkiaSharp/tree/master/samples/Basic/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. Теперь установлено и с помощью примеров, указанных ранее, все это работает. Спасибо.