public void DrawTextField(float llx, float lly, float urx, float ury)
{
if (llx > urx) { float x = llx; llx = urx; urx = x; }
if (lly > ury) { float y = lly; lly = ury; ury = y; }
SaveState();
// silver rectangle not filled
SetColorStroke(new BaseColor(0xC0, 0xC0, 0xC0));
SetLineWidth(1);
SetLineCap(0);
Rectangle(llx, lly, urx - llx, ury - lly);
Stroke();
// white rectangle filled
SetLineWidth(1);
SetLineCap(0);
SetColorFill(new BaseColor(0xFF, 0xFF, 0xFF));
Rectangle(llx + 0.5f, lly + 0.5f, urx - llx - 1f, ury -lly - 1f);
Fill();
// silver lines
SetColorStroke(new BaseColor(0xC0, 0xC0, 0xC0));
SetLineWidth(1);
SetLineCap(0);
MoveTo(llx + 1f, lly + 1.5f);
LineTo(urx - 1.5f, lly + 1.5f);
LineTo(urx - 1.5f, ury - 1f);
Stroke();
// gray lines
SetColorStroke(new BaseColor(0xA0, 0xA0, 0xA0));
SetLineWidth(1);
SetLineCap(0);
MoveTo(llx + 1f, lly + 1);
LineTo(llx + 1f, ury - 1f);
LineTo(urx - 1f, ury - 1f);
Stroke();
// black lines
SetColorStroke(new BaseColor(0x00, 0x00, 0x00));
SetLineWidth(1);
SetLineCap(0);
MoveTo(llx + 2f, lly + 2f);
LineTo(llx + 2f, ury - 2f);
LineTo(urx - 2f, ury - 2f);
Stroke();
RestoreState();
}