在 Visual Studio 中使用 SkiaSharp

Posted

技术标签:

【中文标题】在 Visual Studio 中使用 SkiaSharp【英文标题】:Using SkiaSharp in Visual Studio 【发布时间】:2016-03-01 09:37:11 【问题描述】:

我正在研究 SkiaSharp 在未来项目中的使用,遵循 GitHub 上当前可用的文档:

https://developer.xamarin.com/guides/cross-platform/drawing/introduction/

我正在 Windows 7 上的 Visual Studio 2013 上进行开发。我尝试使用 Xamarin android App 项目类型,但它需要 SkiaSharp 包中的 DllImportAttribute 的商业许可证。

我想知道是否可以选择一个 C# Visual Studio 项目,该项目将如何显示 SkiaSharp 画布,如果可以,我该怎么做?

【问题讨论】:

投反对票的原因是什么,请解释一下,以便我改变我的问题 我遵循了不包括 Windows 集成的入门指南。感谢您指向示例 :-) 【参考方案1】:

评论上的链接目前已损坏。由于“samples”文件夹以后可能会再次更改路径,有需要的可以从https://github.com/mono/SkiaSharp页面开始探索。

更多关于使用 SkiaSharp 的信息可以在API documentation online 和这篇关于使用skia sharp 绘图的文章中找到

对于需要实用快速入门的人来说,这里有一些示例:

获取 SKCanvas

using (var surface = SKSurface.Create (width: 640, height: 480, SKColorType.N_32, SKAlphaType.Premul)) 
SKCanvas myCanvas = surface.Canvas;

// Your drawing code goes here.

绘制文字

// clear the canvas / fill with white
canvas.DrawColor (SKColors.White);

// set up drawing tools
using (var paint = new SKPaint ()) 
  paint.TextSize = 64.0f;
  paint.IsAntialias = true;
  paint.Color = new SKColor (0x42, 0x81, 0xA4);
  paint.IsStroke = false;

  // draw the text
  canvas.DrawText ("Skia", 0.0f, 64.0f, paint);

绘制位图

Stream fileStream = File.OpenRead ("MyImage.png");

// clear the canvas / fill with white
canvas.DrawColor (SKColors.White);

// decode the bitmap from the stream
using (var stream = new SKManagedStream(fileStream))
using (var bitmap = SKBitmap.Decode(stream))
using (var paint = new SKPaint()) 
  canvas.DrawBitmap(bitmap, SKRect.Create(Width, Height), paint);

使用图像过滤器绘图

Stream fileStream = File.OpenRead ("MyImage.png"); // open a stream to an image file

// clear the canvas / fill with white
canvas.DrawColor (SKColors.White);

// decode the bitmap from the stream
using (var stream = new SKManagedStream(fileStream))
using (var bitmap = SKBitmap.Decode(stream))
using (var paint = new SKPaint()) 
  // create the image filter
  using (var filter = SKImageFilter.CreateBlur(5, 5)) 
    paint.ImageFilter = filter;

    // draw the bitmap through the filter
    canvas.DrawBitmap(bitmap, SKRect.Create(width, height), paint);
  

【讨论】:

你能告诉我如何从这个图像返回吗?我需要生成带有一些文本的图像,然后通过流将其发送到打印机(全部在 xamarin 上完成)我想我可以使用此代码,但如何提取图像(jpg 或其他内容并作为流发送?

以上是关于在 Visual Studio 中使用 SkiaSharp的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Visual Studio 2008 中使用 Visual Studio 6 编译的 C++ 静态库吗?

visual studio 中 如何还原.bak数据文件

如何在visual studio开发android程序

visual studio 2012中如何查看一个工程需要哪些dll文件???

如何在Visual Studio Code 中运行 Python

在 Visual Studio 2015 中打开 Visual Studio 2017 项目