[]
        
(Showing Draft Content)

C1.Util.DX.DirectWrite.TextRendererBase.DrawUnderline

DrawUnderline Method

DrawUnderline(object, float, float, ref Underline, IntPtr)

IDWriteTextLayout::Draw calls this function to instruct the client to draw an underline.

Declaration
public virtual HResult DrawUnderline(object clientDrawingContext, float baselineOriginX, float baselineOriginY, ref Underline underline, IntPtr clientDrawingEffectPtr)
Parameters
Type Name Description
object clientDrawingContext

The application-defined drawing context passed to IDWriteTextLayout::Draw.

float baselineOriginX

The pixel location (X-coordinate) at the baseline origin of the run where underline applies.

float baselineOriginY

The pixel location (Y-coordinate) at the baseline origin of the run where underline applies.

Underline underline

Pointer to a structure containing underline logical information.

IntPtr clientDrawingEffectPtr

Application-defined effect to apply to the underline. Usually this argument represents effects such as the foreground brush filling the interior of a line.

Returns
Type Description
HResult

If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.

Implements
Remarks

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.