API 参考 / 渲染、资源与语言
RenderCanvas
用途:模组唯一允许的绘制入口。所有绘制都走它,不接触任何平台图形 API;颜色由宿主在实现内部转换。
方法速览
| 方法 | 用途 |
|---|---|
fillRect / drawRect / drawLine / fillTriangle | 几何图元(实心填充 / 1px 描边) |
setColor(Color) | 设置填充与描边颜色 |
setAlpha(double) | 设置全局透明度(0-1) |
clip(x, y, w, h) | 局部空间裁剪 |
save() / restore() | 状态栈 |
translate / scale / rotate | 变换 |
drawText / measureText | 文本绘制与度量 |
drawImage | 整图拉伸绘制 |
完整签名
java
public interface RenderCanvas {
void fillRect(double x, double y, double w, double h);
void drawRect(double x, double y, double w, double h);
void drawLine(double x1, double y1, double x2, double y2);
void fillTriangle(double x1, double y1, double x2, double y2, double x3, double y3);
void setColor(Color color);
void setAlpha(double alpha);
void clip(double x, double y, double w, double h);
void save();
void restore();
void translate(double dx, double dy);
void scale(double sx, double sy);
void rotate(double angle, double pivotX, double pivotY);
void drawText(String text, double x, double y, TextStyle style);
TextMetrics measureText(String text, TextStyle style);
void drawImage(RenderImage image, double x, double y, double w, double h);
}fillRect(x, y, w, h) / drawRect(x, y, w, h)
签名:
java
void fillRect(double x, double y, double w, double h);
void drawRect(double x, double y, double w, double h);行为:fillRect 实心填充(受 setAlpha 影响,支持半透明);drawRect 画 1px 描边矩形、不填充内部。颜色取当前 setColor。
drawLine(x1, y1, x2, y2)
签名:
java
void drawLine(double x1, double y1, double x2, double y2);行为:绘制 1px 直线,颜色取当前 setColor。
fillTriangle(...)
签名:
java
void fillTriangle(double x1, double y1, double x2, double y2, double x3, double y3);行为:填充实心三角形,支持半透明;填充色为当前 setColor。
setColor(Color color)
签名:
java
void setColor(Color color);行为:设置后续填充与描边的颜色(java.awt.Color,含 alpha)。文本颜色由 TextStyle#color() 单独指定。
setAlpha(double alpha)
签名:
java
void setAlpha(double alpha);行为:设置全局透明度(0-1),作用于后续所有绘制,与颜色自身的 alpha 相乘。
clip(x, y, w, h)
签名:
java
void clip(double x, double y, double w, double h);行为:把绘制裁剪到矩形区域。坐标为当前变换下的局部坐标;裁剪与既有裁剪区求交。需配合 save() / restore()——设置裁剪的那对 save/restore 结束后裁剪自动失效。
save() / restore()
签名:
java
void save();
void restore();行为:保存/恢复全部绘制状态(颜色、透明度、裁剪、变换)。必须成对;与 MatrixStack#push/pop 共用同一栈。
translate(dx, dy) / scale(sx, sy) / rotate(angle, pivotX, pivotY)
签名:
java
void translate(double dx, double dy);
void scale(double sx, double sy);
void rotate(double angle, double pivotX, double pivotY);行为:增量修改坐标系。rotate 的角度为弧度,轴点为当前局部坐标。
drawText(text, x, y, style)
签名:
java
void drawText(String text, double x, double y, TextStyle style);行为:按样式绘制文本。x 的含义由 style.alignment() 决定(左缘/中心/右缘)。text 为空或 style 为 null 时什么都不画。字体路径与字号细节见 TextStyle。
measureText(text, style)
签名:
java
TextMetrics measureText(String text, TextStyle style);行为:只测量不绘制,返回宽度/行高;度量与绘制走同一字体路径,所以测量结果可直接用于右对齐/居中排版。
drawImage(image, x, y, w, h)
签名:
java
void drawImage(RenderImage image, double x, double y, double w, double h);行为:把整张图拉伸绘制到目标矩形(不支持子区域)。要画图集的一部分请用 RenderContext#drawTexture。
示例:带描边的 HUD 条
java
void drawBar(RenderCanvas c, double x, double y, double w, double h, double ratio) {
c.save();
c.setAlpha(0.85);
c.setColor(new java.awt.Color(0x20, 0x20, 0x20));
c.fillRect(x, y, w, h);
c.setAlpha(1.0);
c.setColor(new java.awt.Color(0x4F, 0xC3, 0xF7));
c.fillRect(x, y, w * ratio, h);
c.setColor(java.awt.Color.WHITE);
c.drawRect(x, y, w, h); // 1px 边框
c.restore();
}实时预览实时预览:RenderCanvas 绘制沙盒(在下方画布上拖拽试试)
预览加载中…