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