public override void drawGlyphVector(java.awt.font.GlyphVector gv, float x, float y) { java.awt.Font javaFont = gv.getFont(); if (javaFont == null) { javaFont = font; } int count = gv.getNumGlyphs(); char[] text = new char[count]; for (int i = 0; i < count; i++) { text[i] = (char)gv.getGlyphCode(i); } java.awt.font.FontRenderContext frc = gv.getFontRenderContext(); Matrix matrix = null; try { if (frc != null && !frc.getTransform().equals(getTransform())) { // save the old context and use the transformation from the renderContext matrix = g.Transform; g.Transform = J2C.ConvertTransform(frc.getTransform()); } g.DrawString(new string(text), javaFont.getNetFont(), brush, x, y - javaFont.getSize(), StringFormat.GenericTypographic); } finally { // Restore the old context if needed if (matrix != null) { g.Transform = matrix; } } }
public override void drawString(String text, float x, float y) { if (text.Length == 0) { return; } bool fractional = isFractionalMetrics(); StringFormat format = new StringFormat(StringFormat.GenericTypographic); format.FormatFlags = StringFormatFlags.MeasureTrailingSpaces | StringFormatFlags.NoWrap | StringFormatFlags.FitBlackBox; format.Trimming = StringTrimming.None; if (fractional || !sun.font.StandardGlyphVector.isSimpleString(font, text)) { g.DrawString(text, netfont, brush, x, y - font.getSize(), format); } else { // fixed metric for simple text, we position every character to simulate the Java behaviour java.awt.font.FontRenderContext frc = new java.awt.font.FontRenderContext(null, isAntiAlias(), fractional); sun.font.FontDesignMetrics metrics = sun.font.FontDesignMetrics.getMetrics(font, frc); y -= font.getSize(); for (int i = 0; i < text.Length; i++) { g.DrawString(text.Substring(i, 1), netfont, brush, x, y, format); x += metrics.charWidth(text[i]); } } }
public override void drawString(String text, float x, float y) { if (text.Length == 0) { return; } CompositingMode origCM = g.CompositingMode; try { if (origCM != CompositingMode.SourceOver) { // Java has a different behaviar for AlphaComposite and Text Antialiasing g.CompositingMode = CompositingMode.SourceOver; } bool fractional = isFractionalMetrics(); if (fractional || !sun.font.StandardGlyphVector.isSimpleString(font, text)) { g.DrawString(text, netfont, brush, x, y - baseline, FORMAT); } else { // fixed metric for simple text, we position every character to simulate the Java behaviour java.awt.font.FontRenderContext frc = new java.awt.font.FontRenderContext(null, isAntiAlias(), fractional); sun.font.FontDesignMetrics metrics = sun.font.FontDesignMetrics.getMetrics(font, frc); y -= baseline; for (int i = 0; i < text.Length; i++) { g.DrawString(text.Substring(i, 1), netfont, brush, x, y, FORMAT); x += metrics.charWidth(text[i]); } } } finally { if (origCM != CompositingMode.SourceOver) { g.CompositingMode = origCM; } } }