in dotnet/WPF/VisualLayerIntegration/VisualLayerIntegration/BarGraphUtility/BarGraph.cs [248:306]
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 = SharpDX.Direct2D1.TextAntialiasMode.Cleartype;
var ClientRectangleTitle = new RectangleF(0, 0, textWidth, textHeight);
var ClientRectangleXAxis = new RectangleF(0,
containerHeight - textHeight + sgOffsetY * 2, textWidth, textHeight);
var 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 SharpDX.Vector2(0, containerHeight));
renderTarget.BeginDraw();
renderTarget.DrawText(yAxisText, _textFormatVertical, ClientRectangleYAxis, _textSceneColorBrush);
renderTarget.EndDraw();
// Rotate the RenderTarget back.
renderTarget.Transform = Matrix3x2.Identity;
}