private void DrawLabel(LabelModel labelModel, ChartPlotInfo info, LabelAlign align = LabelAlign.Left) { switch (align) { case LabelAlign.Left: break; case LabelAlign.Center: labelModel.XPix -= labelModel.Text.Length * 4; break; case LabelAlign.Right: break; default: break; } var textBlock = new TextBlock(); textBlock.Text = labelModel.Text; RenderElement(textBlock, labelModel.XPix, labelModel.YPix); }
private void DrawGrid(ChartPlotInfo info) { var frameBrush = Brushes.SteelBlue; var gridBrush = Brushes.LightSteelBlue; //Grid for (DateTime x = info.MinX; x < info.MaxX; x += info.XStep) { if (x > info.MinX) { DrawLine(x, 0, x, info.PhysHeight, info, gridBrush, true); } var labelModel = new LabelModel(info) { Text = string.Format("{0:dd MMM yyyy}", x), XPhys = x, YPix = info.MaxHeight + ARGUMENT_LABEL_VERTICAL_SHIFT + info.HeaderHeight }; DrawLabel(labelModel, info); } for (var y = info.MinY; y <= info.MaxY; y += info.YStep) { DrawLine(0, y, info.Width, y, info, gridBrush, true); var labelModel = new LabelModel(info) { Text = string.Format("{0:F1}", y), XPix = VALUE_LABEL_HORIZONTAL_SHIFT, YPhys = y }; DrawLabel(labelModel, info); } //Frame //left DrawLine(0, 0, 0, info.MaxY, info, frameBrush); //right DrawLine(info.Width, 0, info.Width, info.MaxY, info, frameBrush); //bottom DrawLine(0, info.MaxY, info.Width, info.MaxY, info, frameBrush); //top DrawLine(0, 0, info.Width, 0, info, frameBrush); }