[]
IDWriteTextRenderer1
[Guid("D3E0E934-22A0-427E-AAE4-7D9574B59DB1")]
[Shadow(typeof(TextRenderer1Shadow))]
public interface ITextRenderer1 : ITextRenderer, IPixelSnapping, ICallbackable, IDisposable
IDWriteTextLayout::Draw calls this function to instruct the client to render a run of glyphs.
HResult DrawGlyphRun(object clientDrawingContext, float baselineOriginX, float baselineOriginY, GlyphOrientationAngle orientationAngle, MeasuringMode measuringMode, GlyphRun glyphRun, GlyphRunDescription glyphRunDescription, IntPtr clientDrawingEffectPtr)
clientDrawingContext
objectThe application-defined drawing context passed to Draw(object, ITextRenderer, float, float).
baselineOriginX
floatThe pixel location (X-coordinate) at the baseline origin of the glyph run.
baselineOriginY
floatThe pixel location (Y-coordinate) at the baseline origin of the glyph run.
orientationAngle
GlyphOrientationAngleOrientation of the glyph run.
measuringMode
MeasuringModeThe measuring method for glyphs in the run, used with the other properties to determine the rendering mode.
glyphRun
GlyphRunPointer to the glyph run instance to render.
glyphRunDescription
GlyphRunDescriptionA pointer to the optional glyph run description instance which contains properties of the characters associated with this run.
clientDrawingEffectPtr
System.IntPtrApplication-defined drawing effects for the glyphs to render. Usually this argument represents effects such as the foreground brush filling the interior of text.
If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
IDWriteTextLayout::Draw calls this application callback when it needs to draw an inline object.
HResult DrawInlineObject(object clientDrawingContext, float originX, float originY, GlyphOrientationAngle orientationAngle, IInlineObject inlineObject, bool isSideways, bool isRightToLeft, IntPtr clientDrawingEffectPtr)
clientDrawingContext
objectThe application-defined drawing context passed to IDWriteTextLayout::Draw.
originX
floatX-coordinate at the top-left corner of the inline object.
originY
floatY-coordinate at the top-left corner of the inline object.
orientationAngle
GlyphOrientationAngleOrientation of the inline object.
inlineObject
IInlineObjectThe application-defined inline object set using IDWriteTextFormat::SetInlineObject.
isSideways
boolA Boolean flag that indicates whether the object's baseline runs alongside the baseline axis of the line.
isRightToLeft
boolA Boolean flag that indicates whether the object is in a right-to-left context, hinting that the drawing may want to mirror the normal image.
clientDrawingEffectPtr
System.IntPtrApplication-defined drawing effects for the glyphs to render. Usually this argument represents effects such as the foreground brush filling the interior of a line.
If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
IDWriteTextLayout::Draw calls this function to instruct the client to draw a strikethrough.
HResult DrawStrikethrough(object clientDrawingContext, float baselineOriginX, float baselineOriginY, GlyphOrientationAngle orientationAngle, ref Strikethrough strikethrough, IntPtr clientDrawingEffectPtr)
clientDrawingContext
objectThe application-defined drawing context passed to IDWriteTextLayout::Draw.
baselineOriginX
floatThe pixel location (X-coordinate) at the baseline origin of the run where strikethrough applies.
baselineOriginY
floatThe pixel location (Y-coordinate) at the baseline origin of the run where strikethrough applies.
orientationAngle
GlyphOrientationAngleOrientation of the strikethrough.
strikethrough
StrikethroughPointer to a structure containing strikethrough logical information.
clientDrawingEffectPtr
System.IntPtrApplication-defined effect to apply to the strikethrough. Usually this argument represents effects such as the foreground brush filling the interior of a line.
If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
A single strikethrough can be broken into multiple calls, depending on how the formatting changes attributes. Strikethrough is not averaged across font sizes/styles changes. To get an appropriate starting pixel position, add strikethrough::offset to the baseline. Like underlines, the x coordinate will always be passed as the left side, regardless of text directionality.
IDWriteTextLayout::Draw calls this function to instruct the client to draw an underline.
HResult DrawUnderline(object clientDrawingContext, float baselineOriginX, float baselineOriginY, GlyphOrientationAngle orientationAngle, ref Underline underline, IntPtr clientDrawingEffectPtr)
clientDrawingContext
objectThe application-defined drawing context passed to IDWriteTextLayout::Draw.
baselineOriginX
floatThe pixel location (X-coordinate) at the baseline origin of the run where underline applies.
baselineOriginY
floatThe pixel location (Y-coordinate) at the baseline origin of the run where underline applies.
orientationAngle
GlyphOrientationAngleOrientation of the underline.
underline
UnderlinePointer to a structure containing underline logical information.
clientDrawingEffectPtr
System.IntPtrApplication-defined effect to apply to the underline. Usually this argument represents effects such as the foreground brush filling the interior of a line.
If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
A single underline can be broken into multiple calls, depending on how the formatting changes attributes. If font sizes/styles change within an underline, the thickness and offset will be averaged weighted according to characters. To get an appropriate starting pixel position, add underline::offset to the baseline. Otherwise there will be no spacing between the text. The x coordinate will always be passed as the left side, regardless of text directionality. This simplifies drawing and reduces the problem of round-off that could potentially cause gaps or a double stamped alpha blend. To avoid alpha overlap, round the end points to the nearest device pixel.