in dotnet/WinForms/VisualLayerIntegration/VisualLayerIntegration/BarGraphUtility/BarGraph.cs [236:296]
public void DrawText(WindowRenderTarget renderTarget, string titleText, string xAxisText, string yAxisText, float baseTextSize)
{
var sgOffsetY = renderTarget.Size.Height * 1 / 15;
var sgOffsetX = renderTarget.Size.Width * 1 / 15;
var containerHeight = renderTarget.Size.Height - sgOffsetY * 2;
var containerWidth = renderTarget.Size.Width - sgOffsetX * 2; // not used?
var textWidth = (int)containerHeight;
var textHeight = (int)sgOffsetY;
var FactoryDWrite = new SharpDX.DirectWrite.Factory();
textFormatTitle = new TextFormat(FactoryDWrite, "Segoe", baseTextSize * 5 / 4)
{
TextAlignment = TextAlignment.Center,
ParagraphAlignment = ParagraphAlignment.Center
};
textFormatHorizontal = new TextFormat(FactoryDWrite, "Segoe", baseTextSize)
{
TextAlignment = TextAlignment.Center,
ParagraphAlignment = ParagraphAlignment.Far
};
textFormatVertical = new TextFormat(FactoryDWrite, "Segoe", baseTextSize)
{
TextAlignment = TextAlignment.Center,
ParagraphAlignment = ParagraphAlignment.Far
};
renderTarget.AntialiasMode = AntialiasMode.PerPrimitive;
renderTarget.TextAntialiasMode = TextAntialiasMode.Cleartype;
textSceneColorBrush = new SolidColorBrush(renderTarget, black);
RectangleF ClientRectangleTitle = new RectangleF(0, 0, textWidth, textHeight);
RectangleF ClientRectangleXAxis = new RectangleF(0,
containerHeight - textHeight + sgOffsetY * 2, textWidth, textHeight);
RectangleF ClientRectangleYAxis = new RectangleF(-sgOffsetX,
containerHeight - textHeight + sgOffsetY, textWidth, textHeight);
textSceneColorBrush.Color = black;
//Draw title and x axis text.
renderTarget.BeginDraw();
renderTarget.Clear(white);
renderTarget.DrawText(titleText, textFormatTitle, ClientRectangleTitle, textSceneColorBrush);
renderTarget.DrawText(xAxisText, textFormatHorizontal, ClientRectangleXAxis, textSceneColorBrush);
renderTarget.EndDraw();
// Rotate render target to draw y axis text.
renderTarget.Transform = Matrix3x2.Rotation((float)(-Math.PI / 2), new Vector2(0, containerHeight));
renderTarget.BeginDraw();
renderTarget.DrawText(yAxisText, textFormatVertical, ClientRectangleYAxis, textSceneColorBrush);
renderTarget.EndDraw();
// Rotate the RenderTarget back.
renderTarget.Transform = Matrix3x2.Identity;
}