protected override void CalculateDepthPixels(PaintArgs p) { this.m_MarginOuterPixels = (int)Math.Ceiling((double)p.Graphics.MeasureString(base.Font).Height *base.MarginOuter); this.m_TicksLabelMarginPixels = (int)((double)p.Graphics.MeasureString(base.Font).Width *this.TicksLabelMargin); this.m_LengthPixels = 100; PlotChannelImage channel = this.Channel; if (channel != null) { this.m_Colors = channel.IntensityGradient.Colors; this.m_Positions = channel.IntensityGradient.Positions; this.GenerateTicks(p, channel); this.m_EndsMargin = this.m_MarginOuterPixels + (int)Math.Ceiling((double)this.m_MaxSizeTickLabels.Height / 2.0); if (base.DockHorizontal) { this.m_LengthPixels += 2 * this.m_EndsMargin + this.GradientMinHeight; } else { this.m_LengthPixels += 2 * this.m_EndsMargin + this.GradientMinHeight; } base.DockDepthPixels = this.GradientWidth; if (this.TicksVisible) { base.DockDepthPixels += this.TicksMargin + this.TicksLength + this.m_TicksLabelMarginPixels + this.m_MaxSizeTickLabels.Width; } base.DockDepthPixels += 2 * this.m_MarginOuterPixels; } }
public override void ObjectAdded(PlotObject value) { base.ObjectAdded(value); if (value is PlotChannelImage && value.Name == this.m_ChannelName) { this.m_CachedChannel = (value as PlotChannelImage); } }
public override void ObjectRemoved(PlotObject value) { base.ObjectRemoved(value); if (value == this.m_CachedChannel) { this.m_CachedChannel = null; } }
private void GenerateTicks(PaintArgs p, PlotChannelImage channel) { this.m_Ticks.Clear(); this.m_MaxSizeTickLabels = Size.Empty; double num = channel.IntensityGradient.Span / (double)(this.m_Positions.Length - 1); for (int i = 0; i < this.m_Positions.Length; i++) { double value = channel.IntensityGradient.Min + (double)i * num; string text = this.m_TextFormat.GetText(value); this.m_MaxSizeTickLabels = Math2.Max(this.m_MaxSizeTickLabels, p.Graphics.MeasureString(text, base.Font)); this.m_Ticks.Add(text); } }
protected override void Draw(PaintArgs p) { base.I_Fill.Draw(p, base.BoundsAlignment); PlotChannelImage channel = this.Channel; if (channel != null) { Rectangle r = base.BoundsAlignment; r.Inflate(-this.m_MarginOuterPixels, -this.m_MarginOuterPixels); bool dockVertical; if (!(dockVertical = base.DockVertical)) { r.Inflate(0, -this.m_EndsMargin); } else { r.Inflate(-this.m_EndsMargin, 0); } int num = 0; int num2 = 0; dockVertical = base.DockVertical; int left = r.Left; int right = r.Right; int top = r.Top; int bottom = r.Bottom; int width = r.Width; int height = r.Height; bool stepsEnabled = channel.IntensityGradient.StepsEnabled; int num3 = dockVertical ? width : height; Bitmap image = (!stepsEnabled) ? this.GetGradientBitmap(num3, dockVertical) : this.GetStepBitmap(num3, dockVertical); if (base.DockRight) { p.Graphics.DrawImage(image, left, top); } else if (base.DockLeft) { p.Graphics.DrawImage(image, right - this.GradientWidth, top); } else if (base.DockTop) { p.Graphics.DrawImage(image, left, bottom - this.GradientWidth); } else if (base.DockBottom) { p.Graphics.DrawImage(image, left, top); } if (this.TicksVisible) { if (base.DockRight) { num = left + this.GradientWidth + this.TicksMargin; } else if (base.DockLeft) { num = right - this.GradientWidth - this.TicksMargin; } else if (base.DockTop) { num = bottom - this.GradientWidth - this.TicksMargin; } else if (base.DockBottom) { num = top + this.GradientWidth + this.TicksMargin; } if (base.DockRight) { num2 = num + this.TicksLength + this.m_TicksLabelMarginPixels; } else if (base.DockLeft) { num2 = num - this.TicksLength - this.m_TicksLabelMarginPixels; } else if (base.DockTop) { num2 = num - this.TicksLength - this.m_TicksLabelMarginPixels; } else if (base.DockBottom) { num2 = num + this.TicksLength + this.m_TicksLabelMarginPixels; } Size maxSizeTickLabels = this.m_MaxSizeTickLabels; DrawStringFormat genericTypographic = DrawStringFormat.GenericTypographic; genericTypographic.LineAlignment = StringAlignment.Center; genericTypographic.Alignment = StringAlignment.Far; Pen pen = p.Graphics.Pen(base.ForeColor); for (int i = 0; i < this.m_Positions.Length; i++) { string s = (string)this.m_Ticks[i]; int num4 = dockVertical ? (left + (int)(this.m_Positions[i] * (float)num3)) : (top + (int)(this.m_Positions[i] * (float)num3)); if (base.DockRight) { p.Graphics.DrawLine(pen, num, num4, num + this.TicksLength, num4); } else if (base.DockLeft) { p.Graphics.DrawLine(pen, num, num4, num - this.TicksLength, num4); } else if (base.DockTop) { p.Graphics.DrawLine(pen, num4, num, num4, num - this.TicksLength); } else if (base.DockBottom) { p.Graphics.DrawLine(pen, num4, num, num4, num + this.TicksLength); } if (base.DockRight) { r = new Rectangle(num2, num4 - maxSizeTickLabels.Height / 2, maxSizeTickLabels.Width, maxSizeTickLabels.Height); } else if (base.DockLeft) { r = new Rectangle(num2 - maxSizeTickLabels.Width, num4 - maxSizeTickLabels.Height / 2, maxSizeTickLabels.Width, maxSizeTickLabels.Height); } else if (base.DockTop) { r = new Rectangle(num4 - maxSizeTickLabels.Height / 2, num2 - maxSizeTickLabels.Width, maxSizeTickLabels.Height, maxSizeTickLabels.Width); } else if (base.DockBottom) { r = new Rectangle(num4 - maxSizeTickLabels.Height / 2, num2, maxSizeTickLabels.Height, maxSizeTickLabels.Width); } if (base.DockRight) { p.Graphics.DrawRotatedText(s, base.Font, base.ForeColor, r, TextRotation.X000, genericTypographic); } else if (base.DockLeft) { p.Graphics.DrawRotatedText(s, base.Font, base.ForeColor, r, TextRotation.X000, genericTypographic); } else if (base.DockTop) { p.Graphics.DrawRotatedText(s, base.Font, base.ForeColor, r, TextRotation.X090, genericTypographic); } else if (base.DockBottom) { p.Graphics.DrawRotatedText(s, base.Font, base.ForeColor, r, TextRotation.X090, genericTypographic); } if (this.TicksShowFirstAndLastOnly && i == 0) { i = this.m_Positions.Length - 2; } } } } }