示例#1
0
        /// <summary>
        /// カーソルを更新します。
        /// </summary>
        /// <param name="mouse">マウス座標</param>
        /// <param name="result">ヒットテストの結果</param>
        /// <param name="x">x座標</param>
        /// <param name="max_x">最大x座標</param>
        /// <param name="format">価格表示のフォーマット</param>
        public virtual void UpdateCursors(Point mouse, HitTestResult result, int x, int max_x, string format)
        {
            if (result.ChartArea == this)
            {
                // マウスが自エリア内の場合

                // カーソル
                CursorX.SetCursorPixelPosition(mouse, false);
                CursorY.SetCursorPixelPosition(mouse, false);

                // カーソルラベルY
                CursorLabelY.Text = AxisY2.PixelPositionToValue(mouse.Y).ToString(format);
                CursorLabelY.Top  = mouse.Y - CursorLabelY.Height / 2;
                if (AxisX.ScaleView.Position + AxisX.ScaleView.Size > max_x)
                {
                    CursorLabelY.Left = (int)(AxisX.ValueToPixelPosition(AxisX.ScaleView.Position + AxisX.ScaleView.Size) + 1);
                }
                else
                {
                    CursorLabelY.Left = (int)(AxisX.ValueToPixelPosition(AxisX.ScaleView.Position + AxisX.ScaleView.Size + 1) + 1);
                }
                CursorLabelY.Visible = true;
            }
            else
            {
                // マウスが他エリア内の場合

                // カーソル
                CursorY.Position = double.NaN;

                // カーソルラベルY
                CursorLabelY.Visible = false;
            }
        }
        // drawing axis title near arrows
        private void GraphArea_PostPaint(object sender, ChartPaintEventArgs e)
        {
            if (e.ChartElement is Chart && (axisX.TitleAlignment == TitleAlignment.NearAxisArrow || axisY.TitleAlignment == TitleAlignment.NearAxisArrow))
            {
                Chart chart = (Chart)e.ChartElement;

                Graphics g = e.ChartGraphics.Graphics;

                Font       drawFont = new Font("Verdana", 8);
                SolidBrush drawBrush = new SolidBrush(Color.Black);
                float      x, y;
                // X AXIS
                if (axisX.TitleAlignment == TitleAlignment.NearAxisArrow)
                {
                    x = chart.Width - 90 - g.MeasureString(axisX.TextToDisplay, drawFont).Width;
                    y = (float)AxisY.ValueToPixelPosition(0) - 20;
                    g.DrawString(axisX.TextToDisplay, drawFont, drawBrush, x, y);
                }
                // Y AXIS
                if (axisY.TitleAlignment == TitleAlignment.NearAxisArrow)
                {
                    x = (float)AxisX.ValueToPixelPosition(0);
                    y = chart.Location.X;
                    g.DrawString(axisY.TextToDisplay, drawFont, drawBrush, x, y);
                }

                drawFont.Dispose();
                drawBrush.Dispose();
            }
        }