我正在做一个与矢量图像有关的小型科学项目,更具体地说是雕刻。
在这个项目中,我需要创建带有块的文件(例如正方形),并填充矢量线,这些矢量线会根据特定参数进行旋转。为此,我使用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。我想可以创建一个代码来计算上述线的线性函数,检查与形状的交点并基于找到的点创建新线。这可能适用于简单的形状,例如正方形或圆形,但对于更复杂的形状,我不这么认为。不过,这样的数学对我来说太过分了:)