极客秀
搜索

.NET MAUI的Android WiFi图传开发(4)——Android设备利用官方库画图和SkiaSharp的相关配置

这期究极折磨,因为资料太少了,然后出了问题真不知道怎么解决。(已解决)

好歹彻夜研究了好几天,总算是起步了。 欢迎大家加入交流群分享经验: ** 656210280 **
本来我是想用SkiaSharp.Views.Maui.Controls;的SKCanvasView来当画板的,但是一点一点资料都没有,官方的API文档又找不到相关的设置。
然后退而求其次用SKCanvasView的基类,官方的
Microsoft.Maui.Graphics;来画图,用SkiaSharp来快速渲染,但是就这个工作都折磨死我了。

然后仔细的阅读了官方的启动手册(这个库我没有找到API文档)
终于解决了画图的问题。
首先我们要在App.xaml.cs中定义我们的Draw函数。


public class GraphicsDrawable : IDrawable{    public void Draw(ICanvas canvas, RectF dirtyRect)    {        using (var paint = new SKPaint())        {            paint.Color = SKColors.Red;  
            canvas.DrawRectangle(0,0,50,50);        }    }}

这个是我们的基础画图库,更新UI就会调用这里。


<ContentPage.Resources>    <drawable:GraphicsDrawable x:Key="drawable" /></ContentPage.Resources>

接着在MainPage.xaml中注册我们的画板,并且为我们的控件绑定画板。


<GraphicsView x:Name="MyView"              Drawable="{StaticResource drawable}"              HeightRequest="300"              WidthRequest="400" />

可以看到,我们是成功的画了个框。
但是我们可以导入更加便利的画图库:SkiaSharp

导入SkiaSharp.Views.Maui.Controls,这样子我们就可以使用其控件。

在MainPage.xaml中导入我们的命名空间。

添加一个画板控件,可以命名,绑定一个PaintSurface刷新,Touch触摸处理。

然后,最最重要的,在MauiProgram.cs中,添加初始化语句,这句话卡了我四五天!!


protected override void OnPaintSurface(SKPaintSurfaceEventArgs e){    this.drawable.Draw(e.Surface, e.Info.Rect);    this.InvalidateSurface();}

补全这些函数,我们就可以使用我们的控件啦。

可以看到画了个框框

1.转载请保留原文链接谢谢!
2.本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
3.本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
4.本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
5.联系方式(#替换成@):pm#vimge.com

  相关内容