这期究极折磨,因为资料太少了,然后出了问题真不知道怎么解决。(已解决)
好歹彻夜研究了好几天,总算是起步了。 欢迎大家加入交流群分享经验: ** 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();}
补全这些函数,我们就可以使用我们的控件啦。
可以看到画了个框框