public class DrawContext extends Object implements Closeable
上下文中提供系列的绘制方法供绘制
一个路径对象只允许出现一种描边和填充颜色 重复设置,取最后一次设置的颜色。
关于路径: 1. beginPath 清空路径。 2. 所有路径在 fill 和 stroke 是才应用图元效果。 3. 路径数据 与 绘图数据分开。 4. 除了 beginPath 之外所有数据均认为是 向已经存在的路径追加新的路径。
| 限定符和类型 | 字段和说明 |
|---|---|
Object |
fillStyle
填充颜色
支持:
String 16进制颜色值,#000000、rgb(0,0,0)、rgba(0,0,0,1)
CT_Color OFD颜色对象
ColorClusterType 颜色族
CanvasPattern 图案
CanvasGradient 渐变
CanvasRadialGradient 径向渐变 |
String |
font
字体描述 格式与CSS3格式一致
[font-style] [font-weight] font-size font-family
它必需包含 font-size font-family,[]内容为可选
详见
https://developer.mozilla.org/en-US/docs/Web/CSS/font
font-style: normal | italic
font-weight: normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
font-size: 12px | 3.17mm (默认单位为 mm)
font-family: 宋体 | SimSun | Times New Roman | Times | serif | sans-serif | monospace | cursive | fantasy
font-family 为必选项,其他为可选项
font-size 和 line-height 可以使用 px 或 mm 作为单位,若不指定单位则默认为 mm
锚点:
- fillText
- measureText |
double |
PPM
每毫米像素数量 pixel per millimeter
|
Object |
strokeStyle
描边颜色
支持:
String 16进制颜色值,#000000、rgb(0,0,0)、rgba(0,0,0,1)
CT_Color OFD颜色对象
ColorClusterType 颜色族
CanvasPattern 图案
CanvasGradient 渐变
CanvasRadialGradient 径向渐变 |
| 构造器和说明 |
|---|
DrawContext(org.ofdrw.core.basicStructure.pageObj.layer.block.CT_PageBlock container,
org.ofdrw.core.basicType.ST_Box boundary,
AtomicInteger maxUnitID,
ResManager resManager)
创建绘制上下文
|
| 限定符和类型 | 方法和说明 |
|---|---|
DrawContext |
addFont(String name,
Path p)
添加字体至文档资源中
|
DrawContext |
arc(double a,
double b,
double angle,
boolean large,
boolean sweep,
double x,
double y)
从当前点连接到点(x,y)的圆弧,并将当前点移动到点(x,y)。
|
DrawContext |
arc(double x,
double y,
double r,
double sAngle,
double eAngle)
创建弧/曲线(用于创建圆或部分圆)
默认顺时针方向
|
DrawContext |
arc(double x,
double y,
double r,
double sAngle,
double eAngle,
boolean counterclockwise)
创建弧/曲线(用于创建圆或部分圆)
|
DrawContext |
beginPath()
开启一段新的路径
如果已经存在路径,那么将会清除已经存在的所有路径。
|
DrawContext |
bezierCurveTo(double cp1x,
double cp1y,
double cp2x,
double cp2y,
double x,
double y)
方法三次贝塞尔曲线的指定控制点,向当前路径添加一个点。
|
DrawContext |
clip()
从原始画布中剪切任意形状和尺寸
裁剪路径以当前的路径作为裁剪参数
裁剪区域受变换矩阵影响
|
void |
close()
结束绘制器绘制工作
|
DrawContext |
closePath()
关闭路径
如果路径存在描边或者填充,那么改路径将会被加入到图形容器中进行渲染
路径关闭后将会清空上下文中的路径对象
|
CanvasGradient |
createLinearGradient(double x0,
double y0,
double x1,
double y1)
创建一个线性渐变对象(double)
|
CanvasGradient |
createLinearGradient(int x0,
int y0,
int x1,
int y1)
创建一个线性渐变对象(int)
|
CanvasPattern |
createPattern(Path img,
String repetition)
创建一个重复底纹
注意:默认情况下使用
mm(int) 将图片像素转换为OFD的单位毫米。 |
CanvasRadialGradient |
createRadialGradient(double x0,
double y0,
double r0,
double x1,
double y1,
double r1)
创建径向渐变颜色
|
DrawContext |
drawImage(Path img,
double dx,
double dy)
在OFD上绘制图像
图像宽度和高度将按照
PPM 进行转换 |
DrawContext |
drawImage(Path img,
double dx,
double dy,
double dWidth,
double dHeight)
在OFD上绘制图像
|
DrawContext |
drawImage(Path img,
double sx,
double sy,
double sWidth,
double sHeight,
double dx,
double dy,
double dWidth,
double dHeight)
裁剪图片并在OFD上绘制图像
主要该方法将会裁剪图片的一部分,然后在OFD上绘制
该方法所有参数单位都是毫米mm,像素转换毫米需要通过
PPM 转换。 |
DrawContext |
fill()
填充已定义路径
默认的填充颜色是黑色。
|
DrawContext |
fillRect(double x,
double y,
double width,
double height)
创建并填充矩形路径
填充矩形不会导致影响上下文中的路径。
|
DrawContext |
fillText(String text,
double x,
double y)
填充文字
|
Double |
getDashOffset()
获取虚线绘制偏移位置
|
org.ofdrw.core.basicType.ST_Array |
getDashPattern()
获取虚线间隔参数
|
int[] |
getFillColor()
获取填充颜色(只读)
若填充颜色非颜色值,则返回null
|
FontSetting |
getFont()
获取当前使用的绘制文字设置
|
Double |
getGlobalAlpha()
获取绘图透明度值
|
org.ofdrw.core.pageDescription.drawParam.LineCapType |
getLineCap()
设置端点样式
默认值: LineCapType.Butt
|
org.ofdrw.core.pageDescription.drawParam.LineJoinType |
getLineJoin()
获取线条连接样式
默认值:LineJoinType.Miter
|
double |
getLineWidth()
获取当前线宽度
|
Double |
getMiterLimit()
获取最大斜接长度,也就是结合点长度截断值
默认值:3.528
|
int[] |
getStrokeColor()
读取当前描边颜色(只读)
若描边颜色非颜色值,则返回null
|
TextAlign |
getTextAlign()
获取文本对齐方式
|
DrawContext |
lineTo(double x,
double y)
从当前点连线到指定点
请在调用前创建路径
|
TextMetrics |
measureText(String text)
测量文本的宽度或高度
如果 readDirection为 0或180,测量文本宽度
如果 readDirection为 0或180,测量文本高度
|
TextMetricsArea |
measureTextArea(String text)
测量文本所占空间大小
|
double |
mm(int pixel)
像素转换为毫米
|
DrawContext |
moveTo(double x,
double y)
移动绘制点到指定位置
|
int |
pixel(double mm)
毫米转换为像素
|
DrawContext |
quadraticCurveTo(double cpx,
double cpy,
double x,
double y)
通过二次贝塞尔曲线的指定控制点,向当前路径添加一个点。
|
DrawContext |
rect(double x,
double y,
double width,
double height)
创建矩形路径
|
DrawContext |
restore()
还原绘图状态
与
save() 总是成对出现。 |
DrawContext |
rotate(double angle)
旋转当前的绘图
|
DrawContext |
save()
保存当前绘图状态
与
restore() 总是成对出现。 |
DrawContext |
scale(double scalewidth,
double scaleheight)
缩放当前绘图,更大或更小
|
DrawContext |
setDefaultFont(double fontSize)
设置默认字体
|
DrawContext |
setFillColor(int[] fillColor)
设置填充颜色
一条路径只有一种填充颜色,重复设置只取最后一次设置颜色
|
DrawContext |
setFillColor(int r,
int g,
int b)
设置填充颜色
一条路径只有一种填充颜色,重复设置只取最后一次设置颜色
|
DrawContext |
setFont(FontSetting font)
设置绘制文字信息
|
DrawContext |
setGlobalAlpha(Double globalAlpha)
设置 绘图透明度值
|
DrawContext |
setLineCap(org.ofdrw.core.pageDescription.drawParam.LineCapType cap)
设置端点样式
默认值: LineCapType.Butt
|
DrawContext |
setLineDash(Double... pattern)
设置线段虚线样式
|
DrawContext |
setLineDash(Double dashOffset,
Double[] pattern)
设置线段虚线样式
|
DrawContext |
setLineJoin(org.ofdrw.core.pageDescription.drawParam.LineJoinType join)
设置线条连接样式,指定了两个线的端点结合时采用的样式。
|
DrawContext |
setLineWidth(double lineWidth)
获取当前线宽度
|
DrawContext |
setMiterLimit(Double miterLimit)
设置最大斜接长度,也就是结合点长度截断值
默认值:3.528
当Join不等于Miter时改参数无效
|
DrawContext |
setStrokeColor(int[] strokeColor)
设置描边颜色
一条路径只有一种描边颜色,重复设置只取最后一次设置颜色
|
DrawContext |
setStrokeColor(int r,
int g,
int b)
设置描边颜色
一条路径只有一种描边颜色,重复设置只取最后一次设置颜色
|
DrawContext |
setTextAlign(TextAlign textAlign)
设置文本对齐方式
|
DrawContext |
setTransform(double a,
double b,
double c,
double d,
double e,
double f)
设置变换矩阵
每当调用 setTransform() 时,它都会重置前一个变换矩阵然后构建新的矩阵
|
DrawContext |
stroke()
绘制已定义的路径
|
DrawContext |
strokeRect(double x,
double y,
double width,
double height)
创建并描边矩形路径
描边矩形不会导致影响上下文中的路径。
|
static void |
transform(org.ofdrw.core.graph.pathObj.AbbreviatedData data,
org.ofdrw.core.basicType.ST_Array ctm)
对路径应用变换矩阵
|
DrawContext |
transform(double a,
double b,
double c,
double d,
double e,
double f)
变换矩阵
每次变换矩阵都会在前一个变换的基础上进行
|
DrawContext |
translate(double x,
double y)
重新映射画布上的 (0,0) 位置
|
public Object fillStyle
支持:
String 16进制颜色值,#000000、rgb(0,0,0)、rgba(0,0,0,1)
CT_Color OFD颜色对象
ColorClusterType 颜色族
CanvasRadialGradient 径向渐变
public Object strokeStyle
支持:
String 16进制颜色值,#000000、rgb(0,0,0)、rgba(0,0,0,1)
CT_Color OFD颜色对象
ColorClusterType 颜色族
CanvasRadialGradient 径向渐变
public String font
[font-style] [font-weight] font-size font-family
它必需包含 font-size font-family,[]内容为可选
详见 https://developer.mozilla.org/en-US/docs/Web/CSS/font
font-style: normal | italic
font-weight: normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
font-size: 12px | 3.17mm (默认单位为 mm)
font-family: 宋体 | SimSun | Times New Roman | Times | serif | sans-serif | monospace | cursive | fantasy
font-family 为必选项,其他为可选项
font-size 和 line-height 可以使用 px 或 mm 作为单位,若不指定单位则默认为 mm
锚点: - fillText - measureText
public double PPM
public DrawContext(org.ofdrw.core.basicStructure.pageObj.layer.block.CT_PageBlock container,
org.ofdrw.core.basicType.ST_Box boundary,
AtomicInteger maxUnitID,
ResManager resManager)
container - 绘制内容缩所放置容器boundary - 画布大小以及位置maxUnitID - 自增的对象IDresManager - 资源管理器public DrawContext beginPath()
如果已经存在路径,那么将会清除已经存在的所有路径。
public DrawContext closePath()
如果路径存在描边或者填充,那么改路径将会被加入到图形容器中进行渲染
路径关闭后将会清空上下文中的路径对象
public DrawContext clip()
裁剪路径以当前的路径作为裁剪参数
裁剪区域受变换矩阵影响
public DrawContext moveTo(double x, double y)
x - X坐标y - Y坐标public DrawContext lineTo(double x, double y)
请在调用前创建路径
x - X坐标y - Y坐标public DrawContext quadraticCurveTo(double cpx, double cpy, double x, double y)
cpx - 贝塞尔控制点的 x 坐标cpy - 贝塞尔控制点的 y 坐标x - 结束点的 x 坐标y - 结束点的 y 坐标public DrawContext bezierCurveTo(double cp1x, double cp1y, double cp2x, double cp2y, double x, double y)
cp1x - 第一个贝塞尔控制点的 x 坐标cp1y - 第一个贝塞尔控制点的 y 坐标cp2x - 第二个贝塞尔控制点的 x 坐标cp2y - 第二个贝塞尔控制点的 y 坐标x - 结束点的 x 坐标y - 结束点的 y 坐标public DrawContext arc(double a, double b, double angle, boolean large, boolean sweep, double x, double y)
a - 椭圆长轴长度b - 椭圆短轴长度angle - 旋转角度,正值 - 顺时针,负值 - 逆时针large - true表示对应度数大于 180°的弧,false 表示对应度数小于 180°的弧sweep - sweep true 表示由圆弧起始点到结束点是顺时针旋转,false表示由圆弧起始点到结束点是逆时针旋转。x - 目标点 xy - 目标点 ypublic DrawContext arc(double x, double y, double r, double sAngle, double eAngle, boolean counterclockwise)
x - 圆的中心的 x 坐标。y - 圆的中心的 y 坐标。r - 圆的半径。sAngle - 起始角,单位度(弧的圆形的三点钟位置是 0 度)。eAngle - 结束角,单位度counterclockwise - 规定应该逆时针还是顺时针绘图。false = 顺时针,true = 逆时针。public DrawContext arc(double x, double y, double r, double sAngle, double eAngle)
默认顺时针方向
x - 圆的中心的 x 坐标。y - 圆的中心的 y 坐标。r - 圆的半径。sAngle - 起始角,单位度(弧的圆形的三点钟位置是 0 度)。eAngle - 结束角,单位度public DrawContext rect(double x, double y, double width, double height)
x - 左上角X坐标y - 左上角Y坐标width - 宽度height - 高度public DrawContext fillRect(double x, double y, double width, double height)
填充矩形不会导致影响上下文中的路径。
如果已经存在路径那么改路径将会提前关闭,并创建新的路径。
x - 左上角X坐标y - 左上角Y坐标width - 宽度height - 高度public DrawContext strokeRect(double x, double y, double width, double height)
描边矩形不会导致影响上下文中的路径。
默认描边颜色为黑色
x - 左上角X坐标y - 左上角Y坐标width - 宽度height - 高度public DrawContext stroke()
public DrawContext fill()
默认的填充颜色是黑色。
public DrawContext scale(double scalewidth, double scaleheight)
scalewidth - 缩放当前绘图的宽度 (1=100%, 0.5=50%, 2=200%, 依次类推)scaleheight - 缩放当前绘图的高度 (1=100%, 0.5=50%, 2=200%, 依次类推)public DrawContext rotate(double angle)
angle - 旋转角度(0~360)public DrawContext translate(double x, double y)
x - 添加到水平坐标(x)上的值y - 添加到垂直坐标(y)上的值public DrawContext transform(double a, double b, double c, double d, double e, double f)
每次变换矩阵都会在前一个变换的基础上进行
a - 水平缩放绘图b - 水平倾斜绘图c - 垂直倾斜绘图d - 垂直缩放绘图e - 水平移动绘图f - 垂直移动绘图public DrawContext setTransform(double a, double b, double c, double d, double e, double f)
每当调用 setTransform() 时,它都会重置前一个变换矩阵然后构建新的矩阵
a - 水平缩放绘图b - 水平倾斜绘图c - 垂直倾斜绘图d - 垂直缩放绘图e - 水平移动绘图f - 垂直移动绘图public DrawContext drawImage(Path img, double sx, double sy, double sWidth, double sHeight, double dx, double dy, double dWidth, double dHeight) throws IOException
主要该方法将会裁剪图片的一部分,然后在OFD上绘制
该方法所有参数单位都是毫米mm,像素转换毫米需要通过 PPM 转换。
img - 图像,路径sx - 图像内部 x 坐标(单位 毫米mm)sy - 图像内部 y 坐标(单位 毫米mm)sWidth - 图像内部宽度(单位 像素px)sHeight - 图像内部高度(单位 像素px)dx - 在画布上放置图像的 x 坐标位置(单位 毫米mm)dy - 在画布上放置图像的 y 坐标位置(单位 毫米mm)dWidth - 在画布上放置图像的宽度(单位 毫米mm)dHeight - 在画布上放置图像的高度(单位 毫米mm)IOException - 图像读取异常public DrawContext drawImage(Path img, double dx, double dy) throws IOException
图像宽度和高度将按照 PPM 进行转换
img - 要使用的图像,请避免资源和文档中已经存在的资源重复dx - 在画布上放置图像的 x 坐标位置dy - 在画布上放置图像的 y 坐标位置IOException - 图片文件读写异常public DrawContext drawImage(Path img, double dx, double dy, double dWidth, double dHeight) throws IOException
img - 要使用的图像,请避免资源和文档中已经存在的资源重复dx - 在画布上放置图像的 x 坐标位置dy - 在画布上放置图像的 y 坐标位置dWidth - 要使用的图像的宽度(伸展或缩小图像)dHeight - 要使用的图像的高度(伸展或缩小图像)IOException - 图片文件读写异常public DrawContext save()
与 restore() 总是成对出现。
public DrawContext restore()
与 save() 总是成对出现。
public DrawContext fillText(String text, double x, double y) throws IOException
text - 填充文字x - 阅读方向上的左下角 x坐标y - 阅读方向上的左下角 y坐标IOException - 字体获取异常public TextAlign getTextAlign()
public DrawContext setTextAlign(TextAlign textAlign)
textAlign - 文本对齐方式public TextMetrics measureText(String text)
如果 readDirection为 0或180,测量文本宽度
如果 readDirection为 0或180,测量文本高度
text - 带测量文本public TextMetricsArea measureTextArea(String text)
text - 带测量文本public int[] getStrokeColor()
若描边颜色非颜色值,则返回null
public DrawContext setStrokeColor(int[] strokeColor)
一条路径只有一种描边颜色,重复设置只取最后一次设置颜色
strokeColor - 描边的RGB颜色public DrawContext setStrokeColor(int r, int g, int b)
一条路径只有一种描边颜色,重复设置只取最后一次设置颜色
r - 红g - 绿b - 蓝public int[] getFillColor()
若填充颜色非颜色值,则返回null
public DrawContext setFillColor(int[] fillColor)
一条路径只有一种填充颜色,重复设置只取最后一次设置颜色
fillColor - 填充颜色public DrawContext setFillColor(int r, int g, int b)
一条路径只有一种填充颜色,重复设置只取最后一次设置颜色
r - 红g - 绿b - 蓝public double getLineWidth()
public DrawContext setLineWidth(double lineWidth)
lineWidth - 线宽度(单位毫米mm)public FontSetting getFont()
public DrawContext setFont(FontSetting font)
font - 文字配置public DrawContext setDefaultFont(double fontSize)
fontSize - 字体大小public Double getGlobalAlpha()
public DrawContext setGlobalAlpha(Double globalAlpha)
globalAlpha - 透明度值 0.0到1.0public DrawContext setLineCap(org.ofdrw.core.pageDescription.drawParam.LineCapType cap)
默认值: LineCapType.Butt
cap - 端点样式public org.ofdrw.core.pageDescription.drawParam.LineCapType getLineCap()
默认值: LineCapType.Butt
public DrawContext setLineJoin(org.ofdrw.core.pageDescription.drawParam.LineJoinType join)
默认值:LineJoinType.Miter
join - 线条连接样式public org.ofdrw.core.pageDescription.drawParam.LineJoinType getLineJoin()
默认值:LineJoinType.Miter
public DrawContext setMiterLimit(Double miterLimit)
默认值:3.528
当Join不等于Miter时改参数无效
miterLimit - 截断值public Double getMiterLimit()
默认值:3.528
public DrawContext setLineDash(Double dashOffset, Double[] pattern)
dashOffset - 虚线绘制偏移位置,如果没有则传入nullpattern - 虚线的线段长度和间隔长度,有两个或多个值,第一个值指定了虚线线段的长度,第二个值制定了线段间隔的长度,依次类推。public DrawContext setLineDash(Double... pattern)
pattern - 虚线的线段长度和间隔长度,有两个或多个值,第一个值指定了虚线线段的长度,第二个值制定了线段间隔的长度,依次类推。public org.ofdrw.core.basicType.ST_Array getDashPattern()
public Double getDashOffset()
public CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1)
x0 - 起始点横坐标y0 - 起始点纵坐标x1 - 结束点横坐标y1 - 结束点纵坐标public CanvasGradient createLinearGradient(int x0, int y0, int x1, int y1)
x0 - 起始点横坐标y0 - 起始点纵坐标x1 - 结束点横坐标y1 - 结束点纵坐标public CanvasPattern createPattern(Path img, String repetition) throws IOException
注意:默认情况下使用 mm(int) 将图片像素转换为OFD的单位毫米。
若有自定义重复图片大小设置可以使用 CanvasPattern.setImageSize(double, double)
img - 底纹图片路径repetition - 重复方式,支持 repeat、column、row、row-columnIOException - 图片读取异常public CanvasRadialGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1)
x0 - 渐变的开始圆的 x 坐标y0 - 渐变的开始圆的 y 坐标r0 - 开始圆的半径x1 - 渐变的结束圆的 x 坐标y1 - 渐变的结束圆的 y 坐标r1 - 结束圆的半径public static void transform(org.ofdrw.core.graph.pathObj.AbbreviatedData data,
org.ofdrw.core.basicType.ST_Array ctm)
data - 图形轮廓数据ctm - 变换矩阵public double mm(int pixel)
pixel - 像素public int pixel(double mm)
mm - 毫米public DrawContext addFont(String name, Path p) throws IOException
name - 字体名称p - 字体文件路径IOException - 字体解析异常public void close()
close 在接口中 Closeableclose 在接口中 AutoCloseableCopyright © 2024. All rights reserved.