public static void Draw(Painter painterSink, ITextMetrics metrics) { Contract.Requires(painterSink != null); Contract.Requires(metrics != null); Draw(painterSink, metrics, metrics.Paragraph.Text); }
// Dispose the pens and fonts we use. void DisposeObjects() { blackBrush = null; thinPen = null; thickPen = null; textMetrics.Dispose(); textMetrics = null; }
// Create pens and fonts we use. void CreateObjects(IGraphicsTarget g) { CmykColor black = CmykColor.FromCmyk(0, 0, 0, 1); blackBrush = new object(); g.CreateSolidBrush(blackBrush, black); thinPen = new object(); g.CreatePen(thinPen, black, PunchcardAppearance.thinLine, LineCap.Flat, LineJoin.Miter, 5F); thickPen = new object(); g.CreatePen(thickPen, black, PunchcardAppearance.thickLine, LineCap.Flat, LineJoin.Miter, 5F); textMetrics = new GDIPlus_TextMetrics(); }
public static void Draw(Painter painterSink, ITextMetrics metrics, IndexedRange range) { Contract.Requires(painterSink != null); Contract.Requires(metrics != null); for(int i = range.StartIndex; i <= range.LastIndex; ++i) { if(metrics.IsClusterStart(i)) { if(metrics.IsVisible(i)) { Rectangle region = metrics.Regions[i]; Point baseline = new Point( region.Left + metrics.BaselineOffset.Width, region.Top + metrics.BaselineOffset.Height); if(metrics.IsRightToLeft(i)) { baseline = new Point(region.Right + metrics.BaselineOffset.Width, baseline.Y); } painterSink.SaveState(); painterSink.Translate(baseline.X, baseline.Y); Outline outline = metrics.Outlines[i]; painterSink.Scale(outline.EmSize, outline.EmSize); if (outline.NormalizedOutline != null) { painterSink.Fill(outline.NormalizedOutline); } painterSink.RestoreState(); } } } }
public ShowFontMetrics(ITextMetrics textMetrics) { this.textMetrics = textMetrics; InitializeComponent(); }