本文整理汇总了C#中IRenderContext.DrawMathText方法的典型用法代码示例。如果您正苦于以下问题:C# IRenderContext.DrawMathText方法的具体用法?C# IRenderContext.DrawMathText怎么用?C# IRenderContext.DrawMathText使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IRenderContext
的用法示例。
在下文中一共展示了IRenderContext.DrawMathText方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RenderOrMeasureLegends
/// <summary>
/// Renders or measures the legends.
/// </summary>
/// <param name="rc">The render context.</param>
/// <param name="rect">Provides the available size if measuring, otherwise it provides the position and size of the legend.</param>
/// <param name="measureOnly">Specify if the size of the legend box should be measured only (not rendered).</param>
/// <returns>The size of the legend box.</returns>
private OxySize RenderOrMeasureLegends(IRenderContext rc, OxyRect rect, bool measureOnly = false)
{
// Render background and border around legend
if (!measureOnly && rect.Width > 0 && rect.Height > 0)
{
rc.DrawRectangleAsPolygon(rect, this.LegendBackground, this.LegendBorder, this.LegendBorderThickness);
}
double availableWidth = rect.Width;
double availableHeight = rect.Height;
double x = this.LegendPadding;
double top = this.LegendPadding;
var size = new OxySize();
// Render/measure the legend title
if (!string.IsNullOrEmpty(this.LegendTitle))
{
OxySize titleSize;
if (measureOnly)
{
titleSize = rc.MeasureMathText(
this.LegendTitle,
this.LegendTitleFont ?? this.DefaultFont,
this.LegendTitleFontSize,
this.LegendTitleFontWeight);
}
else
{
titleSize = rc.DrawMathText(
new ScreenPoint(rect.Left + x, rect.Top + top),
this.LegendTitle,
this.LegendTitleColor.GetActualColor(this.TextColor),
this.LegendTitleFont ?? this.DefaultFont,
this.LegendTitleFontSize,
this.LegendTitleFontWeight,
0,
HorizontalAlignment.Left,
VerticalAlignment.Top,
null,
true);
}
top += titleSize.Height;
size.Width = x + titleSize.Width + this.LegendPadding;
size.Height = top + titleSize.Height;
}
double y = top;
double lineHeight = 0;
// tolerance for floating-point number comparisons
const double Epsilon = 1e-3;
// the maximum item with in the column being rendered (only used for vertical orientation)
double maxItemWidth = 0;
var items = this.LegendItemOrder == LegendItemOrder.Reverse
? this.Series.Reverse().Where(s => s.IsVisible)
: this.Series.Where(s => s.IsVisible);
// When orientation is vertical and alignment is center or right, the items cannot be rendered before
// the max item width has been calculated. Render the items for each column, and at the end.
var seriesToRender = new Dictionary<Series.Series, OxyRect>();
Action renderItems = () =>
{
foreach (var sr in seriesToRender)
{
var itemRect = sr.Value;
var itemSeries = sr.Key;
double rwidth = availableWidth;
if (itemRect.Left + rwidth + this.LegendPadding > rect.Left + availableWidth)
{
rwidth = rect.Left + availableWidth - itemRect.Left - this.LegendPadding;
}
double rheight = itemRect.Height;
if (rect.Top + rheight + this.LegendPadding > rect.Top + availableHeight)
{
rheight = rect.Top + availableHeight - rect.Top - this.LegendPadding;
}
var r = new OxyRect(itemRect.Left, itemRect.Top, Math.Max(rwidth, 0), Math.Max(rheight, 0));
this.RenderLegend(rc, itemSeries, r);
}
seriesToRender.Clear();
};
foreach (var s in items)
//.........这里部分代码省略.........
示例2: RenderLegend
/// <summary>
/// Renders the legend for the specified series.
/// </summary>
/// <param name="rc">The render context.</param>
/// <param name="s">The series.</param>
/// <param name="rect">The position and size of the legend.</param>
private void RenderLegend(IRenderContext rc, Series.Series s, OxyRect rect)
{
var actualItemAlignment = this.LegendItemAlignment;
if (this.LegendOrientation == LegendOrientation.Horizontal)
{
// center/right alignment is not supported for horizontal orientation
actualItemAlignment = HorizontalAlignment.Left;
}
double x = rect.Left;
switch (actualItemAlignment)
{
case HorizontalAlignment.Center:
x = (rect.Left + rect.Right) / 2;
if (this.LegendSymbolPlacement == LegendSymbolPlacement.Left)
{
x -= (this.LegendSymbolLength + this.LegendSymbolMargin) / 2;
}
else
{
x -= (this.LegendSymbolLength + this.LegendSymbolMargin) / 2;
}
break;
case HorizontalAlignment.Right:
x = rect.Right;
// if (LegendSymbolPlacement == LegendSymbolPlacement.Right)
x -= this.LegendSymbolLength + this.LegendSymbolMargin;
break;
}
if (this.LegendSymbolPlacement == LegendSymbolPlacement.Left)
{
x += this.LegendSymbolLength + this.LegendSymbolMargin;
}
double y = rect.Top;
var maxsize = new OxySize(Math.Max(rect.Width - this.LegendSymbolLength - this.LegendSymbolMargin, 0), rect.Height);
rc.SetToolTip(s.ToolTip);
var textSize = rc.DrawMathText(
new ScreenPoint(x, y),
s.Title,
this.LegendTextColor.GetActualColor(this.TextColor),
this.LegendFont ?? this.DefaultFont,
this.LegendFontSize,
this.LegendFontWeight,
0,
actualItemAlignment,
VerticalAlignment.Top,
maxsize,
true);
double x0 = x;
switch (actualItemAlignment)
{
case HorizontalAlignment.Center:
x0 = x - (textSize.Width * 0.5);
break;
case HorizontalAlignment.Right:
x0 = x - textSize.Width;
break;
}
var symbolRect =
new OxyRect(
this.LegendSymbolPlacement == LegendSymbolPlacement.Right
? x0 + textSize.Width + this.LegendSymbolMargin
: x0 - this.LegendSymbolMargin - this.LegendSymbolLength,
rect.Top,
this.LegendSymbolLength,
textSize.Height);
s.RenderLegend(rc, symbolRect);
rc.SetToolTip(null);
}
示例3: RenderLegend
/// <summary>
/// Renders the legend for the specified series.
/// </summary>
/// <param name="rc">
/// The render context.
/// </param>
/// <param name="s">
/// The series.
/// </param>
/// <param name="rect">
/// The position and size of the legend.
/// </param>
private void RenderLegend(IRenderContext rc, Series.Series s, OxyRect rect)
{
double x = rect.Left;
switch (this.LegendItemAlignment)
{
case HorizontalAlignment.Center:
x = (rect.Left + rect.Right) / 2;
if (this.LegendSymbolPlacement == LegendSymbolPlacement.Left)
{
x -= (this.LegendSymbolLength + this.LegendSymbolMargin) / 2;
}
else
{
x -= (this.LegendSymbolLength + this.LegendSymbolMargin) / 2;
}
break;
case HorizontalAlignment.Right:
x = rect.Right;
// if (LegendSymbolPlacement == LegendSymbolPlacement.Right)
x -= this.LegendSymbolLength + this.LegendSymbolMargin;
break;
}
if (this.LegendSymbolPlacement == LegendSymbolPlacement.Left)
{
x += this.LegendSymbolLength + this.LegendSymbolMargin;
}
double y = rect.Top;
var maxsize = new OxySize(Math.Max(rect.Right - x, 0), Math.Max(rect.Bottom - y, 0));
var textSize = rc.DrawMathText(
new ScreenPoint(x, y),
s.Title,
this.LegendTextColor ?? this.TextColor,
this.LegendFont ?? this.DefaultFont,
this.LegendFontSize,
this.LegendFontWeight,
0,
this.LegendItemAlignment,
VerticalAlignment.Top,
maxsize,
true);
double x0 = x;
switch (this.LegendItemAlignment)
{
case HorizontalAlignment.Center:
x0 = x - (textSize.Width * 0.5);
break;
case HorizontalAlignment.Right:
x0 = x - textSize.Width;
break;
}
var symbolRect =
new OxyRect(
this.LegendSymbolPlacement == LegendSymbolPlacement.Right
? x0 + textSize.Width + this.LegendSymbolMargin
: x0 - this.LegendSymbolMargin - this.LegendSymbolLength,
rect.Top,
this.LegendSymbolLength,
textSize.Height);
s.RenderLegend(rc, symbolRect);
}
示例4: RenderTitle
/// <summary>
/// Renders the title and subtitle.
/// </summary>
/// <param name="rc">The render context.</param>
private void RenderTitle(IRenderContext rc)
{
var titleSize = rc.MeasureText(this.Title, this.ActualTitleFont, this.TitleFontSize, this.TitleFontWeight);
double x = (this.TitleArea.Left + this.TitleArea.Right) * 0.5;
double y = this.TitleArea.Top;
if (!string.IsNullOrEmpty(this.Title))
{
rc.DrawMathText(
new ScreenPoint(x, y),
this.Title,
this.TitleColor.GetActualColor(this.TextColor),
this.ActualTitleFont,
this.TitleFontSize,
this.TitleFontWeight,
0,
HorizontalAlignment.Center,
VerticalAlignment.Top);
y += titleSize.Height;
}
if (!string.IsNullOrEmpty(this.Subtitle))
{
rc.DrawMathText(
new ScreenPoint(x, y),
this.Subtitle,
this.SubtitleColor.GetActualColor(this.TextColor),
this.ActualSubtitleFont,
this.SubtitleFontSize,
this.SubtitleFontWeight,
0,
HorizontalAlignment.Center,
VerticalAlignment.Top);
}
}
示例5: RenderTitle
/// <summary>
/// Renders the title and subtitle.
/// </summary>
/// <param name="rc">
/// The render context.
/// </param>
private void RenderTitle(IRenderContext rc)
{
OxySize size1 = rc.MeasureText(this.Title, this.ActualTitleFont, this.TitleFontSize, this.TitleFontWeight);
rc.MeasureText(
this.Subtitle, this.SubtitleFont ?? this.ActualSubtitleFont, this.SubtitleFontSize, this.SubtitleFontWeight);
// double height = size1.Height + size2.Height;
// double dy = (TitleArea.Top+TitleArea.Bottom-height)*0.5;
double dy = this.TitleArea.Top;
double dx = (this.TitleArea.Left + this.TitleArea.Right) * 0.5;
if (!string.IsNullOrEmpty(this.Title))
{
rc.DrawMathText(
new ScreenPoint(dx, dy),
this.Title,
this.TitleColor ?? this.TextColor,
this.ActualTitleFont,
this.TitleFontSize,
this.TitleFontWeight,
0,
HorizontalAlignment.Center,
VerticalAlignment.Top);
dy += size1.Height;
}
if (!string.IsNullOrEmpty(this.Subtitle))
{
rc.DrawMathText(
new ScreenPoint(dx, dy),
this.Subtitle,
this.SubtitleColor ?? this.TextColor,
this.ActualSubtitleFont,
this.SubtitleFontSize,
this.SubtitleFontWeight,
0,
HorizontalAlignment.Center,
VerticalAlignment.Top);
}
}
示例6: Render
/// <summary>
/// Renders the text annotation.
/// </summary>
/// <param name="rc">The render context.</param>
public override void Render(IRenderContext rc)
{
base.Render(rc);
var position = this.Transform(this.TextPosition) + this.Offset;
var clippingRectangle = this.GetClippingRect();
var textSize = rc.MeasureText(this.Text, this.ActualFont, this.ActualFontSize, this.ActualFontWeight);
rc.SetClip(clippingRectangle);
this.actualBounds = GetTextBounds(
position, textSize, this.Padding, this.TextRotation, this.TextHorizontalAlignment, this.TextVerticalAlignment);
if ((this.TextRotation % 90).Equals(0))
{
var actualRect = new OxyRect(this.actualBounds[0], this.actualBounds[2]);
rc.DrawRectangle(actualRect, this.Background, this.Stroke, this.StrokeThickness);
}
else
{
rc.DrawPolygon(this.actualBounds, this.Background, this.Stroke, this.StrokeThickness);
}
rc.DrawMathText(
position,
this.Text,
this.GetSelectableFillColor(this.ActualTextColor),
this.ActualFont,
this.ActualFontSize,
this.ActualFontWeight,
this.TextRotation,
this.TextHorizontalAlignment,
this.TextVerticalAlignment);
rc.ResetClip();
}