我想使用pdfbox 1.8.2 c#包装器实现在矩形边界上绘制云的功能。我能够使用此链接中提到的代码绘制单个半圆。但问题是,我只能绘制单个半圆。当我尝试绘制多个相邻的半圆时,它不起作用。下面是我使用的代码。
(CreateSallarc()由Hans Muller编写,许可证:知识共享归因3.0。所做的更改:将原始代码实现为java。算法由Aleksas Riškus提出)
public void addCloud(PDRectangle rect,PDDocument doc)
{
PDGamma yellow = new PDGamma();
yellow.setR(255);
yellow.setG(255);
yellow.setB(0);
PDPage page = (PDPage)doc.getDocumentCatalog().getAllPages().get(pageNum);
float width = 215;
float height = 156;
int noXSemiCircles = 21;
int noYSemiCircles = 15;
float leftX = 203;
float bottomY = 424;
int index = 0;
PDPageContentStream cs = new PDPageContentStream(doc, page,true,false);
Matrix mt = Matrix.getTranslatingInstance(leftX + (index * 10), bottomY);
AffineTransform at = mt.createAffineTransform();
cs.concatenate2CTM(at);
cs.setStrokingColor(255, 0, 0);
while (index<noXSemiCircles)
{
cs.moveTo(leftX + (index * 10), bottomY);
DrawSlice(cs, 5, 180,270, true);
DrawSlice(cs, 5, 270, 360, false);
index++;
}
cs.stroke();
cs.close();
doc.save(System.IO.Path.Combine(FilePath));
doc.close();
}
private void DrawSlice(PDPageContentStream cs, float rad, float startDeg, float endDeg,bool move)
{
try
{
List<float> smallArc = CreateSmallArc(rad, ConvertDegreesToRadians(startDeg), ConvertDegreesToRadians(endDeg));
if (move)
{
cs.moveTo(smallArc[0], smallArc[1]);
}
cs.addBezier312(smallArc[2], smallArc[3], smallArc[4], smallArc[5], smallArc[6], smallArc[7]);
}
catch (Exception ex)
{
}
}
concatenate2CTM()方法是相对于当前位置的,而不是绝对的。并将stroke()调用移到内部,否则它将不会显示在Adobe Reader中(PDFBox会显示它)。因此,请按如下方式更改代码:
while (index < noXSemiCircles)
{
cs.saveGraphicsState();
Matrix mt = Matrix.getTranslatingInstance(leftX + (index * 10), bottomY);
AffineTransform at = mt.createAffineTransform();
cs.concatenate2CTM(at);
DrawSlice(cs, 5, 180, 270, true);
DrawSlice(cs, 5, 270, 360, true);
cs.stroke();
cs.restoreGraphicsState();
index++;
}
这就是我得到的:
我在想哪里出了问题。我以前做过这个,但由于某种原因,这次我不能让它工作。 我用Netbeans设计了这个项目。最相关的部分是initTiras方法,它被认为可以绘制一些东西,但它没有。我包含了NetBeans生成的代码。 这是代码的最简化版本,但它仍然没有绘制任何内容。 所以我在项目中创建了一个新的框架。然后我把一个JPanel放进去(在设计模式下)。JPanel称为ElPanel和JFrame
问题内容: 我知道熊猫支持次要Y轴,但我很好奇是否有人知道将三次Y轴放置在地块上的方法。目前,我正在用numpy + pyplot来实现这一点,但是对于大数据集来说它的速度很慢。 这是为了在同一张图上绘制具有不同单位的不同测量值,以便于比较(例如,相对湿度/温度/和电导率) 所以真的很好奇是否有人在没有太多工作的情况下就能做到这一点。 [编辑]我怀疑是否有办法做到这一点(没有太多的开销),但是我希
本文向大家介绍python使用matplotlib:subplot绘制多个子图的示例,包括了python使用matplotlib:subplot绘制多个子图的示例的使用技巧和注意事项,需要的朋友参考一下 数据可视化的时候,常常需要将多个子图放在同一个画板上进行比较,python 的matplotlib包下的subplot可以帮助完成子功能。 part1 绘制如下子图 其中: plt.figure(
如何连接多点与流动曲线,使用PyQt5?例如,我试图使用quitTo()对8个点执行此操作,使用交替点作为控制点,但弧不接触控制点(见下面的代码和图表)。我也尝试使用cubicTo(),但这也导致了一个奇怪的曲线。use是否有任何其他函数调用,我应该使用,或自定义的方式来做到这一点?
本文向大家介绍使用python绘制cdf的多种实现方法,包括了使用python绘制cdf的多种实现方法的使用技巧和注意事项,需要的朋友参考一下 首先我们先用随机函数编造一个包含1000个数值的一维numpy数组,如下: 接下来我们将使用各种方法画出以上数据的累积分布图 1、matplotlib.pyplot.hist() 第一种方法,我们使用matplotlib图形库中的hist函数,熟悉该库的人
问题内容: 我正在尝试制作一个在鼠标本地化处绘制一个圆的简单Java程序,它获取了鼠标的X和Y坐标,但是它没有绘制任何内容,我试图绘制一个String,一个圆和一条线,但是没有任何效果,我稍微修改了代码,但仍然无法正常工作 问题答案: 不要直接在上执行自定义绘画。如果可以,请始终在替代方法上进行操作。 为此,请勿使用无限循环。有用于Mouse Motion收听的