private void DrawBottomFrame(PdfAppearance app) { app.MoveTo(borderWidth, borderWidth); app.LineTo(box.Width - borderWidth, borderWidth); app.LineTo(box.Width - borderWidth, box.Height - borderWidth); app.LineTo(box.Width - 2 * borderWidth, box.Height - 2 * borderWidth); app.LineTo(box.Width - 2 * borderWidth, 2 * borderWidth); app.LineTo(2 * borderWidth, 2 * borderWidth); app.LineTo(borderWidth, borderWidth); app.Fill(); }
protected PdfAppearance GetBorderAppearance() { PdfAppearance app = PdfAppearance.CreateAppearance(writer, box.Width, box.Height); switch (rotation) { case 90: app.SetMatrix(0, 1, -1, 0, box.Height, 0); break; case 180: app.SetMatrix(-1, 0, 0, -1, box.Width, box.Height); break; case 270: app.SetMatrix(0, -1, 1, 0, 0, box.Width); break; } app.SaveState(); // background if (backgroundColor != null) { app.SetColorFill(backgroundColor); app.Rectangle(0, 0, box.Width, box.Height); app.Fill(); } // border if (borderStyle == PdfBorderDictionary.STYLE_UNDERLINE) { if (borderWidth != 0 && borderColor != null) { app.SetColorStroke(borderColor); app.SetLineWidth(borderWidth); app.MoveTo(0, borderWidth / 2); app.LineTo(box.Width, borderWidth / 2); app.Stroke(); } } else if (borderStyle == PdfBorderDictionary.STYLE_BEVELED) { if (borderWidth != 0 && borderColor != null) { app.SetColorStroke(borderColor); app.SetLineWidth(borderWidth); app.Rectangle(borderWidth / 2, borderWidth / 2, box.Width - borderWidth, box.Height - borderWidth); app.Stroke(); } // beveled Color actual = backgroundColor; if (actual == null) { actual = Color.WHITE; } app.SetGrayFill(1); DrawTopFrame(app); app.SetColorFill(actual.Darker()); DrawBottomFrame(app); } else if (borderStyle == PdfBorderDictionary.STYLE_INSET) { if (borderWidth != 0 && borderColor != null) { app.SetColorStroke(borderColor); app.SetLineWidth(borderWidth); app.Rectangle(borderWidth / 2, borderWidth / 2, box.Width - borderWidth, box.Height - borderWidth); app.Stroke(); } // inset app.SetGrayFill(0.5f); DrawTopFrame(app); app.SetGrayFill(0.75f); DrawBottomFrame(app); } else { if (borderWidth != 0 && borderColor != null) { if (borderStyle == PdfBorderDictionary.STYLE_DASHED) { app.SetLineDash(3, 0); } app.SetColorStroke(borderColor); app.SetLineWidth(borderWidth); app.Rectangle(borderWidth / 2, borderWidth / 2, box.Width - borderWidth, box.Height - borderWidth); app.Stroke(); if ((options & COMB) != 0 && maxCharacterLength > 1) { float step = box.Width / maxCharacterLength; float yb = borderWidth / 2; float yt = box.Height - borderWidth / 2; for (int k = 1; k < maxCharacterLength; ++k) { float x = step * k; app.MoveTo(x, yb); app.LineTo(x, yt); } app.Stroke(); } } } app.RestoreState(); return(app); }