Je souhaite implémenter une fonctionnalité pour dessiner un nuage sur la bordure d'un rectangle à l'aide de pdfbox 1.8.2 C# wrapper.J'ai la possibilité de dessiner un seul demi-cercle en utilisant le code mentionné dans ce link . Mais le problème est que, je suis capable de dessiner seulement un seul demi-cercle. Cela ne fonctionne pas lorsque j'essaie de dessiner plusieurs demi-cercles adjacents. Voici le code que j'utilise.Impossible de dessiner plusieurs demi-cercles à l'aide de PDPageContentStream
(createSmallArc() est par Hans Muller, license: Creative Commons Attribution 3.0 Les modifications apportées:.. D'origine mis en oeuvre comme code dans java algorithme est par 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)
{
}
}
S'il vous plaît modifier pour ajouter du code qui crée votre rectangle, à savoir avec des nombres réels. –
@Tilman J'ai ajouté des valeurs au code.S'il vous plaît, jetez un oeil.Seulement un seul demi-cercle est en cours d'élaboration. –