iText技术入门

2025-11-08 02:23:01

1、private void DirectDrawResume(PdfContentByte   canvas)

{

PicRidus = 90;

float PicPositonRate = 0.3f;

int ItemLength = 550;

ItemHeigth = 90;

ItemBaseStart = 750;

double openAngle = 100;

int numberSpace = 10;

float SpaceRate = 0.3f;

openAngle = openAngle * Math.PI / 180;

canvas.SetLineWidth(1);

canvas.SetColorFill(BaseColor.GRAY);

PicCirclePoint = new PointF(ItemLength   * PicPositonRate, ItemBaseStart);

PointF Beiseir2 = new PointF(PicCirclePoint.X - PicRidus * (float)Math.Sin(openAngle / 2), PicCirclePoint.Y + PicRidus *   (float)Math.Cos(openAngle / 2));

PointF Beiseir1 = new PointF(PicCirclePoint.X - PicRidus - 1 / 2 * PicRidus *   PicRidus * (float)Math.Sin(Math.Asin(ItemHeigth / 2f / PicRidus) - openAngle / 2), PicCirclePoint.Y   + ItemHeigth / 2);

PointF BeiseirControl = new PointF(Beiseir2.X - (Beiseir2.Y - Beiseir1.Y) / (float)Math.Tan(openAngle / 2), Beiseir1.Y);

canvas.Rectangle(0, Beiseir1.Y - ItemHeigth,   ItemLength, ItemHeigth);

canvas.Fill();

canvas.Arc(ItemLength - ItemHeigth /   2, ItemBaseStart - ItemHeigth / 2, ItemLength + ItemHeigth / 2, ItemBaseStart   + ItemHeigth / 2, 90, -180);

canvas.Fill();

//填充贝塞尔

canvas.MoveTo(PicCirclePoint.X,   PicCirclePoint.Y);

canvas.LineTo(Beiseir1.X,   Beiseir1.Y);

canvas.CurveTo(BeiseirControl.X,   BeiseirControl.Y, Beiseir2.X, Beiseir2.Y);

canvas.Fill();

canvas.MoveTo(PicCirclePoint.X,   PicCirclePoint.Y);

canvas.LineTo(2 * PicCirclePoint.X -   Beiseir2.X, Beiseir2.Y);

canvas.CurveTo(2 * PicCirclePoint.X   - BeiseirControl.X, BeiseirControl.Y, 2 * PicCirclePoint.X - Beiseir1.X,   Beiseir1.Y);

canvas.Fill();

canvas.MoveTo(PicCirclePoint.X,   PicCirclePoint.Y);

canvas.LineTo(2 * PicCirclePoint.X -   Beiseir1.X, Beiseir1.Y - ItemHeigth);

canvas.CurveTo(2 * PicCirclePoint.X   - BeiseirControl.X, BeiseirControl.Y - ItemHeigth, 2 * PicCirclePoint.X -   Beiseir2.X, 2 * PicCirclePoint.Y - Beiseir2.Y);

canvas.Fill();

canvas.MoveTo(PicCirclePoint.X,   PicCirclePoint.Y);

canvas.LineTo(Beiseir2.X, 2 *   PicCirclePoint.Y - Beiseir2.Y);

canvas.CurveTo(BeiseirControl.X,   BeiseirControl.Y - ItemHeigth, Beiseir1.X, Beiseir1.Y - ItemHeigth);

canvas.Fill();

for (int i = 0; i < numberSpace; i++)

{

canvas.Arc(PicCirclePoint.X -   PicRidus, PicCirclePoint.Y - PicRidus, PicCirclePoint.X + PicRidus,   PicCirclePoint.Y + PicRidus, (float)(90 + openAngle * 90 / Math.PI - openAngle * 180 / Math.PI *   SpaceRate / (numberSpace + SpaceRate) - openAngle * 180 / Math.PI / (numberSpace + SpaceRate) * i), (float)(-openAngle * 180 / Math.PI * (1 - SpaceRate) /   (numberSpace + SpaceRate)));

canvas.LineTo(PicCirclePoint.X,   PicCirclePoint.Y);

canvas.Fill();

}

for (int i = 0; i < numberSpace; i++)

{

canvas.Arc(PicCirclePoint.X -   PicRidus, PicCirclePoint.Y - PicRidus, PicCirclePoint.X + PicRidus,   PicCirclePoint.Y + PicRidus, (float)(openAngle * 90 / Math.PI - 90 -   openAngle * 180 / Math.PI * SpaceRate / (numberSpace + SpaceRate) -   openAngle * 180 / Math.PI / (numberSpace + SpaceRate) * i), (float)(-openAngle * 180 / Math.PI * (1 - SpaceRate) /   (numberSpace + SpaceRate)));

canvas.LineTo(PicCirclePoint.X,   PicCirclePoint.Y);

canvas.Fill();

}

canvas.Circle(PicCirclePoint.X,   PicCirclePoint.Y, PicRidus * 0.9f);

canvas.Fill();

PicRidus = PicRidus * 0.8f;

}

iText技术入门

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢