问题标签 [skiasharp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xamarin - 如何在 SkiaSharp 中使用双缓冲
我只是在玩 Xamarin Forms 和 SkiaSharp。我用 SkiaCanvas 创建了一个简单的 Xamarin 表单 ContentView。我的PaintSurface如下画一个简单的绿色圆圈:
在我的测试应用程序中,当我通过拖动窗口的角来调整窗口大小时,圆圈会闪烁。我想知道在 Xamarin.Forms 应用程序中使用 SkiaSharp 绘制图形时是否有一种简单的方法来启用双缓冲?
xamarin - Xamarin SkiaSharp
尝试通过此 SkiaSharp-FormsSample 使用/学习 SkiaSharp。但我无法编译它,因为它使用 SkiaSharp-Nuget-Packages 1.56.0,不可用,所以我无法卸载这些包。有没有人有解决方案或想法,如何解决?欢迎任何建议。
xamarin - 如何从 Xamarin.forms 的 SkiaSharp 请求 REDRAW?
我正在使用 Xamarin.forms 制作应用程序。我正在使用 SkiaSharp 绘制 2d 视图。
我可以在 iOS pcl 端使用 SetNeedDisplay 来制作动画。
但我想从 Forms pcl 中调用它。有没有这样的方法?
c# - 在 Xamarin.Forms 上使用 SkiaSharp 库绘制样条曲线(平滑路径)?
我正在使用 Xamarin 表单制作应用程序。
我想用 SKPath 绘制一条平滑的路径(样条线),但我找不到一种简单的方法来实现这一点。
Skiasharp 目前不支持它,除非我自己顺利制作路径。
谢谢。
xamarin - 有没有办法使用#define 来区分平台?(Xamarin.Forms)
我正在使用 Xamarin.forms pcl 制作应用程序。
我已经知道我们使用“Device.OS”来区分我们使用 pcl 时是什么平台。
但是在某些情况下,我需要使用define header来归档它,但我找不到解决方案。
在某些情况下,我想为每个平台使用不同的派生类。
像这样
c# - 在 WPF 中使用 SkiaSharp 模糊文本
我正在使用 SkiaSharp 在 WPF 中绘制文本。
http://lostindetails.com/blog/post/SkiaSharp-with-Wpf
https://github.com/8/SkiaSharp-Wpf-Example
如您所见,文字不清晰。
通过将文本与标题中的 MainWindow 测试进行比较,您可以很容易地注意到这一点。
可能是什么问题?
wpf - 在 SkiaSharp 中绘制旋转文本
如何在SkiaSharp
.
目前我正在旋转SKCanvas
,绘制文本,然后将其旋转回来。但我认为可能有更有效的方法来做到这一点。
xamarin - Xamarin 项目未能在 Android 或 Windows 中找到 SkiaSharp
我承认我是 Xamarin 和跨平台开发的新手,所以如果这似乎是一个微不足道的问题,我深表歉意,但我已经尝试了几个晚上了。
我有一个基本的 Xamarin Forms 应用程序,它在 Windows 8.1、Windows UWP 和 Android 中运行。它使用 SkiaSharp 处理一些基本图形(基于 Skia 示例)。
它在所有三个平台上都运行,但我必须删除 Xamarin 包并将其重新添加到项目中,我无法让 SkiaSharp 在 Windows 或 Android 中正常运行。我得到一个 BadImageFormatException:
Additional information: Could not load file or assembly 'SkiaSharp, Version=1.56.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)
我在 Windows 8.1 版本和 Android 版本的 x86、x64 和任何 CPU 配置中都遇到了这个异常。
如果我将它运行在 UWP 项目中,它会完美运行。
相关项目结构:
- MyProj.XMForms(便携式)- 包含核心 Xamarin.Forms 应用程序的 PCL、带有 StackLayout 的 MainPage(包含带有 MyView 的 Frame)以及包含带有 SKCanvasView 的 Grid 的 MyView。
- MyProj.Windows (Windows 8.1) - 包装器 - 仅包含一个空应用程序和一个加载 MyProj.XMForms 应用程序的 MainPage。
- MyProj.UWP (Universal Windows) - 包装器 - 仅包含一个空应用程序和一个加载 MyProj.XMForms 应用程序的 MainPage。
- MyProj.Droid (Android) - 包装器 - 只包含一个加载 MyProj.XMForms 应用程序的 MainActivity。
所有项目 NuGet 包都有 Xamarin.Forms 2.3.3.180、SkiaSharp 1.56.0 和 SkiaSharp.Views.Forms 1.56.0。MyProj.Droid 也有 SkiaSharp.Views(其他人都不会接受)。
我发现了https://github.com/mono/SkiaSharp/issues/190并添加<ShouldIncludeNativeSkiaSharp>true</ShouldIncludeNativeSkiaSharp>
到 csproj 中,没有任何区别。
我尝试删除并重新添加 SkiSharp NuGet 包。
我错过了什么?
谢谢,
伊恩
xamarin - SkiaSharp 无效转换异常
收到一个InvalidCastException
in LoadApplication(new App());
。我在 PCL 和 Android 中都添加了 SkiaSharp 和 SkiaSharp.Views.Forms。它还自动将 SkiaSharp.Views 包添加到 Android 项目中。
我删除了所有复杂代码并将这部分留在了我的 XAML 文件中
在我注释掉该skCanvasView
行后加载的应用程序。如果我取消注释,则会引发以下异常。
在 Xamarin.Forms.Registrar 的(包装器 castclass)System.Object:__castclass_with_cache (object,intptr,intptr)
1[TRegistrable].GetHandler (System.Type type) [0x0001b] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Core\Registrar.cs:24 at Xamarin.Forms.Registrar
1[TRegistrable].GetHandler[TOut](System.Type 类型)[0x00000] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Core\Registrar.cs:29 在 Xamarin.Forms.Platform.Android.Platform。 CreateRenderer (Xamarin.Forms.VisualElement element) [0x00006] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\Platform.cs:288 在 Xamarin.Forms.Platform.Android.VisualElementPackager.AddChild (Xamarin. Forms.VisualElement 视图,Xamarin.Forms.Platform.Android.IVisualElementRenderer oldRenderer,Xamarin.Forms.Platform.Android.RendererPool 池,System.Boolean sameChildren) [0x00023] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform .Android\VisualElementPackager.cs:74 在 Xamarin.Forms.Platform.Android.VisualElementPackager.SetElement (Xamarin.Forms.VisualElement oldElement,Xamarin.Forms。VisualElement newElement) [0x00104] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:207 在 Xamarin.Forms.Platform.Android.VisualElementPackager.Load () [0x00000] 在 C:\ BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:58 在 Xamarin.Forms.Platform.Android.VisualElementRenderer1[TElement].SetPackager (Xamarin.Forms.Platform.Android.VisualElementPackager packager) [0x00007] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:337 at Xamarin.Forms.Platform.Android.VisualElementRenderer
1[TElement].SetElement (TElement element) [0x00111] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:196 在 Xamarin.Forms.Platform.Android.VisualElementRenderer1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00027] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:129 at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element) [0x0001f] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\Platform.cs:289 at Xamarin.Forms.Platform.Android.VisualElementPackager.AddChild (Xamarin.Forms.VisualElement view, Xamarin.Forms.Platform.Android.IVisualElementRenderer oldRenderer, Xamarin.Forms.Platform.Android.RendererPool pool, System.Boolean sameChildren) [0x00023] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:74 at Xamarin.Forms.Platform.Android.VisualElementPackager.SetElement (Xamarin.Forms.VisualElement oldElement, Xamarin.Forms.VisualElement newElement) [0x00104] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:207 at Xamarin.Forms.Platform.Android.VisualElementPackager.Load () [0x00000] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:58 at Xamarin.Forms.Platform.Android.VisualElementRenderer
1[TElement] .SetPackager (Xamarin.Forms.Platform.Android.VisualElementPackager packager) [0x00007] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:337 在 Xamarin.Forms.Platform.Android.VisualElementRenderer1[TElement].SetElement (TElement element) [0x00111] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:196 at Xamarin.Forms.Platform.Android.VisualElementRenderer
1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement(Xamarin.Forms.VisualElement 元素)[0x00027] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:129在 Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement 元素)[0x0001f] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\Platform.cs:289 在 Xamarin.Forms .Platform.Android.VisualElementPackager.AddChild(Xamarin.Forms.VisualElement 视图,Xamarin.Forms.Platform.Android.IVisualElementRenderer oldRenderer,Xamarin.Forms.Platform.Android.RendererPool 池,System.Boolean sameChildren)[0x00023] 在 C:\ BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:74 在 Xamarin.Forms.Platform.Android.VisualElementPackager。SetElement (Xamarin.Forms.VisualElement oldElement, Xamarin.Forms.VisualElement newElement) [0x00104] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:207 在 Xamarin.Forms.Platform.Android .VisualElementPackager.Load () [0x00000] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:58 在 Xamarin.Forms.Platform.Android.VisualElementRendererAndroid.VisualElementRendererAndroid.VisualElementRenderer1[TElement].SetPackager (Xamarin.Forms.Platform.Android.VisualElementPackager packager) [0x00007] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:337 at Xamarin.Forms.Platform.Android.VisualElementRenderer
1[TElement].SetElement(TElement 元素)[0x00111] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:196 在 Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement ].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement 元素) [0x00027] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:129 在 Xamarin。 Forms.Platform.Android.Platform.CreateRenderer(Xamarin.Forms.VisualElement 元素)[0x0001f] 在 Xamarin.Forms.Platform 的 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\Platform.cs:289 中。 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform 中的 Android.AppCompat.Platform.AddChild(Xamarin.Forms.Page 页面,System.Boolean 布局)[0x00015]。Android\AppCompat\Platform.cs:250 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform 中的 Xamarin.Forms.Platform.Android.AppCompat.Platform.SetPage (Xamarin.Forms.Page newRoot) [0x00089]。 Android\AppCompat\Platform.cs:239 在 Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage(Xamarin.Forms.Page 页面)[0x0009b] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\ AppCompat\FormsAppCompatActivity.cs:374 在 Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x00000] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:444 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform 中的 Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication(Xamarin.Forms.Application 应用程序)[0x00183]。Android\AppCompat\FormsAppCompatActivity.cs:135 在 /Users/simonlam/Desktop/Samples/Xamarin/SkiaRemote/SkiaSharpRemote/Droid/MainActivity.cs 中的 SkiaSharpRemote.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x0002e]: 25 在 Android.Support.V4.App.FragmentActivity.n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00011] in <27c17fe440cf491ba8255bcefade6e02>:0 at (wrapper dynamic-method) System.Object:a050e315 -9322-4894-b9ce-8db88ad775ab (intptr,intptr,intptr)n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00011] in <27c17fe440cf491ba8255bcefade6e02>:0 at (wrapper dynamic-method) System.Object:a050e315-9322-4894-b9ce-8db884775abint ( ,intptr)n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00011] in <27c17fe440cf491ba8255bcefade6e02>:0 at (wrapper dynamic-method) System.Object:a050e315-9322-4894-b9ce-8db884775abint ( ,intptr)
该错误并没有告诉我太多,我只看到这是某种铸造错误。
我还有另一个项目也使用了skiasharp。我基本上遵循相同的路线,但对于这个项目它不起作用。