iText技术入门
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;
}
