private void RenderTextFramePrimitive(Graphics g, TextFrameRecord textFrame) { var penWidth = ScaleLineWidth(textFrame.LineWidth); var rect = ScreenFromWorld(textFrame.CalculateBounds()); if (textFrame.IsSolid) { using (var brush = new SolidBrush(textFrame.AreaColor)) { DrawingUtils.FillRectangle(g, brush, rect); } } if (textFrame.ShowBorder) { using (var pen = CreatePen(textFrame.Color, penWidth, lineJoin: LineJoin.Miter)) { DrawingUtils.DrawRectangle(g, pen, rect); } // reduce text area according to the penWidth rect.Inflate(-penWidth, -penWidth); } using (var brush = new SolidBrush(textFrame.TextColor)) using (var font = CreateFont(textFrame.FontId)) { DrawingUtils.DrawString(g, textFrame.Text, font, brush, rect, StringAlignment.Near, StringAlignment.Near, textFrame.ClipToRect, textFrame.WordWrap); } }
/// <summary> /// Instantiates a record according to its record type number. /// </summary> /// <param name="recordType">Integer representing the record type.</param> /// <returns>A new empty instance of a record primitive.</returns> private SchPrimitive CreateRecord(int recordType) { SchPrimitive record; switch (recordType) { case 1: record = new SchComponent(); break; case 2: record = new PinRecord(); break; case 3: record = new SymbolRecord(); break; case 4: record = new TextStringRecord(); break; case 5: record = new BezierRecord(); break; case 6: record = new PolylineRecord(); break; case 7: record = new PolygonRecord(); break; case 8: record = new EllipseRecord(); break; case 9: record = new PieChartRecord(); break; case 10: record = new RoundedRectangleRecord(); break; case 11: record = new EllipticalArcRecord(); break; case 12: record = new ArcRecord(); break; case 13: record = new LineRecord(); break; case 14: record = new RectangleRecord(); break; case 28: case 209: record = new TextFrameRecord(); break; case 30: record = new ImageRecord(); break; case 34: record = new Record34(); break; case 41: record = new Record41(); break; case 44: record = new Record44(); break; case 45: record = new Record45(); break; case 46: record = new Record46(); break; case 48: record = new Record48(); break; default: EmitWarning($"Record {recordType} not supported"); record = new SchPrimitive(); break; } return(record); }