绘制 2D 矢量图形的对象。
以下示例演示了如何使用 Painter2D 类在 VisualElement 中使用 VisualElement.generateVisualContent 回调绘制内容。您还可以创建一个独立的 Painter2D.Painter2D 对象以绘制离屏内容,并使用 Painter2D.SaveToVectorImage 方法将绘图内容保存到 VectorImage 资源中。
using UnityEngine; using UnityEngine.UIElements;
[RequireComponent(typeof(UIDocument))] public class Painter2DExample : MonoBehaviour { public void OnEnable() { var doc = GetComponent<UIDocument>(); doc.rootVisualElement.generateVisualContent += Draw; }
void Draw(MeshGenerationContext ctx) { var painter = ctx.painter2D; painter.lineWidth = 10.0f; painter.lineCap = LineCap.Round; painter.strokeGradient = new Gradient() { colorKeys = new GradientColorKey[] { new GradientColorKey() { color = Color.red, time = 0.0f }, new GradientColorKey() { color = Color.blue, time = 1.0f } } }; painter.BeginPath(); painter.MoveTo(new Vector2(10, 10)); painter.BezierCurveTo(new Vector2(100, 100), new Vector2(200, 0), new Vector2(300, 100)); painter.Stroke(); } }
fillColor | 使用 Fill 时填充路径的颜色。 |
lineCap | 使用 Stroke 绘制路径时使用的端点样式。 |
lineJoin | 使用 Stroke 绘制路径时使用的连接样式。 |
lineWidth | 使用 Stroke 绘制路径时的线宽。 |
miterLimit | 使用 LineJoin.Miter 连接时,这定义了斜接长度与笔画宽度之比的限制,在超过此限制时将斜接转换为斜角。 |
strokeColor | 使用 Stroke 绘制路径时的颜色。 |
strokeGradient | 使用 Stroke 时使用的笔画渐变。 |
Painter2D | 初始化 Painter2D 的实例。 |
Arc | 向当前子路径添加一条弧线到指定位置、半径和角度。 |
ArcTo | 使用控制点向当前子路径添加一条弧线到指定位置。 |
BeginPath | 开始一条新路径并清空已记录的子路径列表。 |
BezierCurveTo | 使用两个控制点向当前子路径添加一条三次贝塞尔曲线到指定位置。 |
Clear | 当作为分离的绘图器创建时,清除当前内容。否则不执行任何操作。 |
ClosePath | 使用直线关闭当前子路径。如果子路径已关闭,则不执行任何操作。 |
Dispose | 释放 Painter2D 对象并释放其内部非托管资源。 |
Fill | 填充当前定义的路径。 |
LineTo | 向当前子路径添加一条直线到指定位置。 |
MoveTo | 在提供的坐标处开始一个新的子路径。 |
QuadraticCurveTo | 使用一个控制点向当前子路径添加一条二次贝塞尔曲线到指定位置。 |
SaveToVectorImage | 将此 Painter2D 的内容保存到 VectorImage 对象中。 |
Stroke | 描边当前定义的路径。 |