virtual void OnDraw(const Context &context) override { using wiztk::graphic::Canvas; using wiztk::graphic::Paint; const RectF &rect = GetBounds(); int scale = context.surface()->GetScale(); Canvas *canvas = context.canvas(); canvas->Save(); canvas->Scale(scale, scale); Paint paint; paint.SetColor(ColorF(0.855f, 0.855f, 0.165f, .9f)); canvas->DrawRect(rect, paint); canvas->Restore(); SkCanvas *sk_canvas = canvas->GetSkCanvas(); SkImageInfo info = SkImageInfo::MakeN32(400, 400, kPremul_SkAlphaType); sk_sp<SkSurface> surface = sk_canvas->makeSurface(info); SkCanvas *top_canvas = surface->getCanvas(); SkRect top_rect = SkRect::MakeXYWH(50, 50, 100, 100); SkPaint top_paint; top_paint.setColor(0xFFFF0000); top_canvas->drawRect(top_rect, top_paint); top_canvas->flush(); surface->draw(sk_canvas, 100, 100, nullptr); canvas->Flush(); }