在JAVA中剪切矢量图像

时间:2018-12-18 16:33:24

标签: java image vector vector-graphics clipping

我正在做一个与矢量图像有关的小型科学项目,更具体地说是雕刻。

在这个项目中,我需要创建带有块的文件(例如正方形),并填充矢量线,这些矢量线会根据特定参数进行旋转。为此,我使用Vectorgraphics2d(http://trac.erichseifert.de/vectorgraphics2d/

部分代码如下:

1)创建行(在数组中)

Graphics2D vg2d = new VectorGraphics2D();
Line2D.Double[] numberOfLinesGroup = new Line2D.Double[numberOfLines];              

                for (int x = 0; x < numberOfLines ; x++) {


                    double pointPX = xPosition-blurrWidth;
                    double pointPY = yPosition + (x * heightDistance);
                    double pointNX = xPosition + (blurrWidth*2);
                    double pointNY = yPosition + (x * heightDistance);

                    numberOfLinesGroup[x] = new  Line2D.Double( pointPX, pointPY, pointNX, pointNY);
                }

2)旋转整个图片:

vg2d.rotate(angle, xPosition + (blurrWidth / 2), yPosition + (blurrHeight / 2));

3)裁剪给定形状

Rectangle2D rect = new Rectangle2D.Float(); 
rect.setRect(xPosition, yPosition, blurrWidth, blurrHeight);
vg2d.setClip(rect);

4)绘制最终图片

for (int y = 0; y < numberOfLines; y++) {
                    vg2d.draw(numberOfLinesGroup[y]);
                }

问题:

从外观上看,文件看起来不错: Result picture

但是当我使用软件(CorelDraw,Illustrator等)将其放入cnc或任何其他矢量时,它仍然会在裁剪区域之外看到这些线条 Appearance from vector software

是否可以剪切这些线,使其仅存在于形状区域中? 也许其他我不知道的库会支持这种功能?

另一个问题是,当我使用Adobe Reader打开文件时,它喊“ BBox无效”。知道这是什么意思吗?

将感谢您的帮助!

p.s。我想可以创建一个代码来计算上述线的线性函数,检查与形状的交点并基于找到的点创建新线。这可能适用于简单的形状,例如正方形或圆形,但对于更复杂的形状,我不这么认为。不过,这样的数学对我来说太过分了:)

0 个答案:

没有答案