Token导航 LogoToken导航TokenDH.com
开发需要联网github未标认证来源可访问许可证需确认审计通过

maui-graphics-drawing毛伊岛图形绘制

Agent Skill

maui-graphics-drawing 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

499

周安装

20

GitHub Stars

129

下载量

162
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:maui-graphics-drawing(毛伊岛图形绘制)
来源仓库:https://github.com/davidortinau/maui-skills
仓库路径:skills/maui-graphics-drawing
安装命令:
npx skills add https://github.com/davidortinau/maui-skills --skill maui-graphics-drawing
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/davidortinau/maui-skills --skill maui-graphics-drawing

简介

用于处理 GitHub 仓库、Issue 和 Pull Request 信息。

  • 适合围绕代码变更和协作事项进行整理。maui-graphics-drawing 属于开发类 Skill,可作为该场景下的辅助能力补充。
  • 可结合来源仓库和原始 README 核验具体用法。
  • 安装前建议确认权限范围和是否会触发命令执行。
  • 维护状态不明时需人工复核功能稳定性。

SKILL.md

.NET MAUI Graphics Drawing

Common gotchas

IssueFix
Nothing draws on screenEnsure Drawable is set on GraphicsView and the control has non-zero HeightRequest/WidthRequest
State bleeds between shapesWrap isolated sections in SaveState() / RestoreState() pairs
Shadows stick to later drawsCall canvas.SetShadow(SizeF.Zero, 0, null) after drawing the shadowed element
Clipping never resetsClipping is cumulative per frame — use SaveState/RestoreState around clip regions
UI freezes during drawingNever do I/O, network, or heavy computation inside Draw() — it runs on the UI thread

Canvas state — always pair Save/Restore

⚠️ Unpaired SaveState/RestoreState causes state leaks across draw calls.

// ✅ Correct — isolated state
canvas.SaveState();
canvas.StrokeColor = Colors.Red;
canvas.StrokeSize = 6;
canvas.DrawRectangle(10, 10, 80, 80);
canvas.RestoreState();
// Stroke reverts to previous values

// ❌ Wrong — state leaks to everything drawn after
canvas.StrokeColor = Colors.Red;
canvas.StrokeSize = 6;
canvas.DrawRectangle(10, 10, 80, 80);
// Every subsequent shape is now red with size 6

Saves/restores: stroke, fill, font, shadow, clip, and transforms. Nest calls for layered isolation.

Triggering redraws

// ✅ Correct — queue a redraw
graphicsView.Invalidate();

// ❌ Wrong — never call Draw() directly
myDrawable.Draw(canvas, rect);
  • Invalidate() queues a redraw; the framework calls IDrawable.Draw on the next frame.
  • ⚠️ Avoid calling Invalidate() in a tight loop — batch state changes, then invalidate once.

Performance tips

  • Keep Draw() fast — pre-compute paths and data outside the draw method; Draw() is called on every frame.
  • Reuse PathF objects — create them once, store as fields, draw repeatedly.
  • Use MeasureFirstItem-style thinking — if drawing many identical items, calculate dimensions once.
  • Minimize allocations — avoid new PathF() inside Draw() when the path doesn't change.
// ✅ Pre-computed path (field)
private readonly PathF _starPath = BuildStarPath();

public void Draw(ICanvas canvas, RectF dirtyRect)
{
    canvas.FillPath(_starPath);
}

// ❌ Allocating every frame
public void Draw(ICanvas canvas, RectF dirtyRect)
{
    var path = new PathF();
    // ...build path every frame...
    canvas.FillPath(path);
}

Shadows and clipping — sticky state pitfalls

Shadows apply to all subsequent draws until explicitly removed. Clips accumulate and can only be undone with RestoreState():

// ✅ Shadow: remove after use
canvas.SetShadow(new SizeF(5, 5), 4, Colors.Gray);
canvas.FillRectangle(20, 20, 100, 60);
canvas.SetShadow(SizeF.Zero, 0, null); // ← must remove

// ✅ Clip: isolate with SaveState/RestoreState
canvas.SaveState();
canvas.ClipRectangle(20, 20, 100, 100);
canvas.FillRectangle(0, 0, 200, 200); // clipped
canvas.RestoreState();                  // clip removed

// ❌ Clip persists — everything after is also clipped
canvas.ClipRectangle(20, 20, 100, 100);
canvas.FillEllipse(150, 150, 50, 50); // unintentionally clipped!

Set properties BEFORE draw calls

// ✅ Properties then draw
canvas.StrokeColor = Colors.Blue;
canvas.DrawRectangle(10, 10, 100, 50);

// ❌ Setting after draw has no effect on previous shape
canvas.DrawRectangle(10, 10, 100, 50);
canvas.StrokeColor = Colors.Blue;

Decision framework

NeedApproach
Simple shapes / static graphicsSingle IDrawable, draw in Draw()
Animated graphicsUpdate state externally, call Invalidate() from timer/animation
Complex layered sceneMultiple SaveState/RestoreState blocks, or separate drawables
Hit testing on drawn elementsTrack shape bounds manually — GraphicsView has no built-in hit test on drawn content
Platform-specific renderingUse handlers/platform code; Microsoft.Maui.Graphics is cross-platform only

Quick checklist

  • GraphicsView has Drawable set and non-zero size
  • Draw() is fast — no I/O, no heavy allocations
  • Every SaveState() has a matching RestoreState()
  • Shadows removed with SetShadow(SizeF.Zero, 0, null) after use
  • Clips wrapped in SaveState/RestoreState blocks
  • Properties set before the draw call they apply to
  • Invalidate() used instead of calling Draw() directly

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

31.52%
按下载量换算51

Claude

31.19%
按下载量换算51

Cursor

18.7%
按下载量换算30

Gemini CLI

8.92%
按下载量换算14

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills