Пример #1
0
        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;
            }
        }
Пример #2
0
 public override void ObjectAdded(PlotObject value)
 {
     base.ObjectAdded(value);
     if (value is PlotChannelImage && value.Name == this.m_ChannelName)
     {
         this.m_CachedChannel = (value as PlotChannelImage);
     }
 }
Пример #3
0
 public override void ObjectRemoved(PlotObject value)
 {
     base.ObjectRemoved(value);
     if (value == this.m_CachedChannel)
     {
         this.m_CachedChannel = null;
     }
 }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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;
                        }
                    }
                }
            }
        }