本文整理汇总了C#中IPlotArea类的典型用法代码示例。如果您正苦于以下问题:C# IPlotArea类的具体用法?C# IPlotArea怎么用?C# IPlotArea使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IPlotArea类属于命名空间,在下文中一共展示了IPlotArea类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetStepPolylinePoints
/// <summary>
/// Gets the sub points for a given range. For step connections, at least one points needs to be inserted inbetween two original points, for some step connection styles two points.
/// </summary>
/// <param name="pdata">The pdata.</param>
/// <param name="range">The range.</param>
/// <param name="layer">The layer.</param>
/// <param name="connectCircular">if set to <c>true</c> [connect circular].</param>
/// <param name="numberOfPointsPerOriginalPoint">The number of points per original point. For most step styles one additional point is inserted, thus the return value is 2. For some connection styles, two points are inserted inbetween two original points, thus the return value will be 3.</param>
/// <param name="lastIndex">The last index.</param>
/// <returns></returns>
protected abstract PointF[] GetStepPolylinePoints(
PointF[] pdata,
IPlotRange range,
IPlotArea layer,
bool connectCircular,
out int numberOfPointsPerOriginalPoint,
out int lastIndex);
示例2: Paint
public static void Paint(System.Drawing.Graphics g, IPaintContext paintContext, IPlotArea layer, PlotItemCollection coll)
{
for (int i = coll.Count - 1; i >= 0; --i)
{
coll[i].Paint(g, paintContext, layer, i == coll.Count - 1 ? null : coll[i + 1], i == 0 ? null : coll[i - 1]);
}
}
示例3: GetStepPolylinePoints
protected override PointF[] GetStepPolylinePoints(
PointF[] allLinePoints,
IPlotRange range,
IPlotArea layer,
bool connectCircular,
out int numberOfPointsPerOriginalPoint,
out int lastIndex)
{
numberOfPointsPerOriginalPoint = 3;
PointF[] subLinePoints = new PointF[numberOfPointsPerOriginalPoint * (range.Length - 1 + (connectCircular ? 1 : 0)) + 1];
int end = range.UpperBound - 1;
int i, j;
for (i = 0, j = range.LowerBound; j < end; i += numberOfPointsPerOriginalPoint, j++)
{
subLinePoints[i] = allLinePoints[j];
subLinePoints[i + 1] = new PointF((allLinePoints[j].X + allLinePoints[j + 1].X) / 2, allLinePoints[j].Y);
subLinePoints[i + 2] = new PointF((allLinePoints[j].X + allLinePoints[j + 1].X) / 2, allLinePoints[j + 1].Y);
}
subLinePoints[i] = allLinePoints[j];
lastIndex = i;
if (connectCircular)
{
subLinePoints[i + 1] = new PointF((allLinePoints[j].X + allLinePoints[range.LowerBound].X) / 2, allLinePoints[j].Y);
subLinePoints[i + 2] = new PointF((allLinePoints[j].X + allLinePoints[range.LowerBound].X) / 2, allLinePoints[range.LowerBound].Y);
subLinePoints[i + 3] = allLinePoints[range.LowerBound];
lastIndex = i + 3;
}
return subLinePoints;
}
示例4: Paint
public static void Paint(IGraphicsContext3D g, Altaxo.Graph.IPaintContext paintContext, IPlotArea layer, PlotItemCollection coll)
{
for (int i = coll.Count - 1; i >= 0; --i)
{
coll[i].Paint(g, paintContext, layer, i == coll.Count - 1 ? null : coll[i + 1], i == 0 ? null : coll[i - 1]);
}
}
示例5: Paint
/// <summary>
/// Template to make a line draw.
/// </summary>
/// <param name="g">Graphics context.</param>
/// <param name="pdata">The plot data. Don't use the Range property of the pdata, since it is overriden by the next argument.</param>
/// <param name="range">The plot range to use.</param>
/// <param name="layer">Graphics layer.</param>
/// <param name="pen">The pen to draw the line.</param>
/// <param name="symbolGap">The size of the symbol gap. Argument is the original index of the data. The return value is the absolute symbol gap at this index.
/// This function is null if no symbol gap is required.</param>
/// <param name="skipFrequency">Skip frequency. Normally 1, thus all gaps are taken into account. If 2, only every 2nd gap is taken into account, and so on.</param>
/// <param name="connectCircular">If true, the end of the line is connected with the start of the line.</param>
public abstract void Paint(
IGraphicsContext3D g,
Processed3DPlotData pdata,
PlotRange range,
IPlotArea layer,
PenX3D pen,
Func<int, double> symbolGap,
int skipFrequency,
bool connectCircular);
示例6: MergeYBoundsInto
public void MergeYBoundsInto(IPlotArea layer, IPhysicalBoundaries pb, PlotItemCollection coll)
{
Dictionary<G2DPlotItem, Processed2DPlotData> plotDataList;
IPhysicalBoundaries pbclone = (IPhysicalBoundaries)pb.Clone(); // before we can use CanUseStyle, we have to give physical y boundaries template
CoordinateTransformingStyleBase.MergeYBoundsInto(pbclone, coll);
if (!CanUseStyle(layer, coll, out plotDataList))
{
pb.Add(pbclone);
return;
}
// we put zero into the y-Boundaries, since the addition starts with that value
pb.Add(new AltaxoVariant(0.0));
AltaxoVariant[] ySumArray = null;
int idx = -1;
foreach (IGPlotItem pi in coll)
{
if (pi is G2DPlotItem)
{
idx++;
G2DPlotItem gpi = (G2DPlotItem)pi;
Processed2DPlotData pdata = plotDataList[gpi];
// Note: we can not use AddUp function here, since
// when we have positive/negative items, the intermediate bounds
// might be wider than the bounds of the end result
if (ySumArray == null)
{
ySumArray = new AltaxoVariant[pdata.RangeList.PlotPointCount];
int j = -1;
foreach (int originalIndex in pdata.RangeList.OriginalRowIndices())
{
j++;
ySumArray[j] = pdata.GetYPhysical(originalIndex);
pb.Add(ySumArray[j]);
}
}
else // this is not the first item
{
int j = -1;
foreach (int originalIndex in pdata.RangeList.OriginalRowIndices())
{
j++;
ySumArray[j] += pdata.GetYPhysical(originalIndex);
pb.Add(ySumArray[j]);
}
}
}
}
}
示例7: PaintOneRange
/// <summary>
/// Template to make a line draw.
/// </summary>
/// <param name="g">Graphics context.</param>
/// <param name="allLinePoints">The plot data. Don't use the Range property of the pdata, since it is overriden by the next argument.</param>
/// <param name="range">The plot range to use.</param>
/// <param name="layer">Graphics layer.</param>
/// <param name="linePen">The pen to draw the line.</param>
/// <param name="symbolGap">The size of the symbol gap. Argument is the original index of the data. The return value is the absolute symbol gap at this index.
/// This function is null if no symbol gap is required.</param>
/// <param name="skipFrequency">Skip frequency. Normally 1, thus all gaps are taken into account. If 2, only every 2nd gap is taken into account, and so on.</param>
/// <param name="connectCircular">If true, there is a line connecting the start and the end of the range.</param>
/// <param name="linePlotStyle">The line plot style.</param>
public override void PaintOneRange(
Graphics g,
PointF[] allLinePoints,
IPlotRange range,
IPlotArea layer,
PenX linePen,
Func<int, double> symbolGap,
int skipFrequency,
bool connectCircular,
LinePlotStyle linePlotStyle)
{
if (range.Length < 2)
return;
int lastIdx;
int numberOfPointsPerOriginalPoint;
PointF[] stepPolylinePoints = GetStepPolylinePoints(allLinePoints, range, layer, connectCircular, out numberOfPointsPerOriginalPoint, out lastIdx);
GraphicsPath gp = new GraphicsPath();
if (null != symbolGap)
{
int end = range.UpperBound - 1;
var subPointsLength = skipFrequency * numberOfPointsPerOriginalPoint + 1;
for (int i = 0; i < range.Length; i += skipFrequency)
{
int partialPolylineLength = Math.Min(subPointsLength, stepPolylinePoints.Length - numberOfPointsPerOriginalPoint * i);
if (partialPolylineLength < 2)
continue; // happens probably at the end of the range if there are not enough points to draw
double gapAtStart = symbolGap(range.GetOriginalRowIndexFromPlotPointIndex(range.LowerBound + i));
double gapAtEnd;
if (connectCircular && skipFrequency >= (range.Length - i))
gapAtEnd = symbolGap(range.OriginalFirstPoint);
else if (skipFrequency <= (range.Length - 1 - i))
gapAtEnd = symbolGap(range.GetOriginalRowIndexFromPlotPointIndex(range.LowerBound + i + skipFrequency));
else
gapAtEnd = 0;
int startOfPartialPolyline = numberOfPointsPerOriginalPoint * i;
var shortenedPolyline = stepPolylinePoints.ShortenPartialPolylineByDistanceFromStartAndEnd(startOfPartialPolyline, startOfPartialPolyline + partialPolylineLength - 1, gapAtStart / 2, gapAtEnd / 2);
if (null != shortenedPolyline)
g.DrawLines(linePen, shortenedPolyline);
}
}
else
{
if (connectCircular)
g.DrawPolygon(linePen, stepPolylinePoints);
else
g.DrawLines(linePen, stepPolylinePoints);
}
}
示例8: PaintOneRange
/// <summary>
/// Template to make a line draw.
/// </summary>
/// <param name="g">Graphics context.</param>
/// <param name="allLinePoints">The plot data. Don't use the Range property of the pdata, since it is overriden by the next argument.</param>
/// <param name="range">The plot range to use.</param>
/// <param name="layer">Graphics layer.</param>
/// <param name="pen">The pen to draw the line.</param>
/// <param name="symbolGap">The size of the symbol gap. Argument is the original index of the data. The return value is the absolute symbol gap at this index.
/// This function is null if no symbol gap is required.</param>
/// <param name="skipFrequency">Skip frequency. Normally 1, thus all gaps are taken into account. If 2, only every 2nd gap is taken into account, and so on.</param>
/// <param name="connectCircular">If true, the line is connected circular, and the area is the polygon inside of that circular connection.</param>
/// <param name="linePlotStyle">The line plot style.</param>
public abstract void PaintOneRange(
Graphics g,
PointF[] allLinePoints,
IPlotRange range,
IPlotArea layer,
PenX pen,
Func<int, double> symbolGap,
int skipFrequency,
bool connectCircular,
LinePlotStyle linePlotStyle
);
示例9: MergeYBoundsInto
public void MergeYBoundsInto(IPlotArea layer, IPhysicalBoundaries pb, PlotItemCollection coll)
{
Dictionary<G2DPlotItem, Processed2DPlotData> plotDataList;
IPhysicalBoundaries pbclone = (IPhysicalBoundaries)pb.Clone(); // before we can use CanUseStyle, we have to give physical y boundaries template
CoordinateTransformingStyleBase.MergeYBoundsInto(pbclone, coll);
if (!CanUseStyle(layer, coll, out plotDataList))
{
pb.Add(pbclone);
return;
}
pb.Add(0);
pb.Add(100);
}
示例10: MergeYBoundsInto
public void MergeYBoundsInto(IPlotArea layer, IPhysicalBoundaries pb, PlotItemCollection coll)
{
CoordinateTransformingStyleBase.MergeYBoundsInto(pb, coll);
}
示例11: PaintPreprocessing
public void PaintPreprocessing(IPaintContext paintContext, IPlotArea layer, PlotItemCollection coll)
{
Dictionary<G3DPlotItem, Processed3DPlotData> plotDataDict = null;
if (!CanUseStyle(layer, coll, out plotDataDict))
{
return;
}
else
{
paintContext.AddValue(this, plotDataDict);
}
AltaxoVariant[] vArray = null;
// First, add up all items since we start always with the last item
int idx = -1;
Processed3DPlotData previousItemData = null;
foreach (IGPlotItem pi in coll)
{
if (pi is G3DPlotItem)
{
idx++;
G3DPlotItem gpi = pi as G3DPlotItem;
Processed3DPlotData pdata = plotDataDict[gpi];
vArray = AddUp(vArray, pdata);
if (idx > 0) // this is not the first item
{
int j = -1;
foreach (int originalIndex in pdata.RangeList.OriginalRowIndices())
{
j++;
Logical3D rel = new Logical3D(
layer.XAxis.PhysicalVariantToNormal(pdata.GetXPhysical(originalIndex)),
layer.YAxis.PhysicalVariantToNormal(pdata.GetYPhysical(originalIndex)),
layer.ZAxis.PhysicalVariantToNormal(vArray[j]));
PointD3D pabs;
layer.CoordinateSystem.LogicalToLayerCoordinates(rel, out pabs);
pdata.PlotPointsInAbsoluteLayerCoordinates[j] = pabs;
}
}
// we have also to exchange the accessor for the physical y value and replace it by our own one
AltaxoVariant[] localArray = (AltaxoVariant[])vArray.Clone();
LocalArrayHolder localArrayHolder = new LocalArrayHolder(localArray, pdata);
pdata.ZPhysicalAccessor = localArrayHolder.GetPhysical;
pdata.PreviousItemData = previousItemData;
previousItemData = pdata;
}
}
}
示例12: FillOneRange
/// <inheritdoc/>
public override void FillOneRange(
GraphicsPath gp,
Processed2DPlotData pdata,
IPlotRange rangeRaw,
IPlotArea layer,
CSPlaneID fillDirection,
bool ignoreMissingDataPoints,
bool connectCircular,
PointF[] allLinePointsShiftedAlready,
double logicalShiftX,
double logicalShiftY
)
{
}
示例13: PrepareScales
/// <summary>
/// Prepares the scale of this plot style. Since this style does not utilize a scale, this function does nothing.
/// </summary>
/// <param name="layer">The parent layer.</param>
public void PrepareScales(IPlotArea layer)
{
}
示例14: PaintTitle
public void PaintTitle(IGraphicsContext3D g, Altaxo.Graph.IPaintContext paintContext, IPlotArea layer)
{
if (IsTitleEnabled)
{
_axisTitle.Paint(g, paintContext);
}
}
示例15: PaintLine
public void PaintLine(IGraphicsContext3D g, IPlotArea layer)
{
if (IsAxisLineEnabled)
{
_axisLineStyle.Paint(g, layer, _cachedAxisInfo, _customTickSpacing);
}
}