Beispiel #1
0
        /// <summary>
        /// 指定量のズームを行う
        /// </summary>
        /// <param name="value"></param>
        private void zoom(int x, int y)
        {
            // 選択ペーンの描画領域の中心をズームのセンターの設定
            var _posDown = new ScreenPos
            {
                X = _tarPane.GetPaneRect().LT.X + _tarPane.GetPaneRect().Width / 2 - _tarPane.GetPaneRect().LT.X,
                Y = _tarPane.GetPaneRect().LT.Y + _tarPane.GetPaneRect().Height / 2 - _tarPane.GetPaneRect().LT.Y
            };
            var _scrollDown = (ScreenPos)Pane.Scroll.Clone();
            var _zoomDown   = (XyBase)Pane.Zoom.Clone();

            // 画面の拡大/縮小
            XyBase zoomNow;

            if (_isX && !_isY)
            {
                zoomNow = Pane.Zoom + XyBase.FromInt(x, 0);            // ズーム値の算出
            }
            else if (!_isX && _isY)
            {
                zoomNow = Pane.Zoom + XyBase.FromInt(0, y);            // ズーム値の算出
            }
            else
            {
                zoomNow = Pane.Zoom + x;                            // ズーム値の算出
            }
            // ズーム値を規定範囲内に収める
            if (zoomNow.X > 4000)
            {
                zoomNow.X = 4000;
            }

            if (zoomNow.Y > 4000)
            {
                zoomNow.Y = 4000;
            }

            if (zoomNow.X < 5)
            {
                zoomNow.X = 5;
            }

            if (zoomNow.Y < 5)
            {
                zoomNow.Y = 5;
            }

            Pane.Zoom = (XyBase)zoomNow.Clone();           // ズーム値の反映

            // クリックした位置を基準にしてズームするように画面をスクロールする。
            var ZoomRatioX = (double)zoomNow.X / _zoomDown.X;                       // X方向のズーム率の算出
            var ZoomRatioY = (double)zoomNow.Y / _zoomDown.Y;                       // Y方向のズーム率の算出

            var beforeDownPos = _posDown - _scrollDown - _tarPane.GetPaneRect().LT; //
            var afterDownPos  = ScreenPos.FromInt((int)(ZoomRatioX * beforeDownPos.X), (int)(ZoomRatioY * beforeDownPos.Y));

            Pane.Scroll = _scrollDown - (afterDownPos - beforeDownPos);
            Pane.Invalidate(null);
        }
Beispiel #2
0
 /// <summary>
 /// ボタンDownイベント
 /// </summary>
 /// <param name="e"></param>
 public virtual void OnMouseDown(MouseState e)
 {
     if (e.Attr.Equals(_trigger))
     {
         _posDown    = (ScreenPos)e.Pos.Clone();
         _paneDown   = Pane;
         _zoomDown   = (XyBase)Pane.Zoom.Clone();
         _scrollDown = (ScreenPos)Pane.Scroll.Clone();
     }
 }
Beispiel #3
0
        /// <summary>
        /// 値を指定してインスタンスを作る
        /// </summary>
        /// <param name="v1">値1</param>
        /// <param name="v2">値2</param>
        /// <returns>インスタンス</returns>

        public static new XyBase FromInt(int v1, int v2)
        {
            var ret = new XyBase
            {
                _v1 = v1,
                _v2 = v2
            };

            return(ret);
        }
Beispiel #4
0
        private void editText(PartsTextBase parts, IRichPane rp)
        {
            _tarParts = parts;
            _tarPane  = rp;
            var sr = parts.GetScRect(rp);

            sr.Deflate(XyBase.FromInt(5, 2));
            sr      -= XyBase.FromInt(2, 0);
            textBox1 = new TextBox
            {
                BackColor = ColorUtil.DeleteAlpha(parts.BackColor)
            };
            if (ColorUtil.IsNearColor(textBox1.BackColor, ColorUtil.DeleteAlpha(parts.FontColor)))
            {
                textBox1.ForeColor = ColorUtil.GetNegativeColor(textBox1.BackColor);
            }
            else
            {
                textBox1.ForeColor = parts.FontColor;
            }
            if (parts.Text == Mes.Current["RequestInput.Short"] || parts.Text == Mes.Current["RequestInput"])
            {
                textBox1.Text = "";
            }
            else
            {
                textBox1.Text = parts.Text;
            }
            textBox1.Multiline     = true; // parts.IsMultiLine;
            textBox1.AcceptsReturn = parts.IsMultiLine;
            textBox1.ImeMode       = parts.ImeMode;
            textBox1.BorderStyle   = System.Windows.Forms.BorderStyle.None;
            textBox1.Location      = sr.LT;
            textBox1.Name          = "textBox1";
            textBox1.KeyDown      += new KeyEventHandler(textBox1_KeyDown);
            textBox1.Font          = parts.LastFont;
            textBox1.Size          = new System.Drawing.Size(sr.Width, sr.Height);
            textBox1.TabIndex      = 1;
            textBox1.TextAlign     = HorizontalAlignment.Left;
            Pane.Control.Controls.Add(textBox1);
            textBox1.Focus();
            textBox1.Select(0, textBox1.Text.Length);
            TKeyEnabler.Enable = false;
        }
Beispiel #5
0
 /// <summary>
 /// モーションズームする値を設定する
 /// </summary>
 /// <param name="pane"></param>
 /// <param name="zoom"></param>
 /// <param name="step"></param>
 public void SetMotionZoomValue(IRichPane pane, XyBase zoom, int step)
 {
     _motionZoom[pane] = new ZoomCommand(zoom, step);
 }
Beispiel #6
0
            /// <summary>
            /// 描画
            /// </summary>
            /// <param name="rp"></param>
            /// <returns></returns>
            public override bool Draw(IRichPane rp)
            {
                if (Visible)
                {
                    var sr = rp.GetPaneRect();
                    sr.LT.X += _margin.LT.X;
                    sr.RB.X -= _margin.RB.X;
                    sr.RB.Y -= _margin.RB.Y;

                    if (Rect.Height < 1)
                    {
                        return(true);
                    }

                    #region 領域の矩形
                    var lgb = createLogPanelBG(sr);

                    sr.LT.Y = sr.RB.Y - Rect.Height;

                    rp.Graphics.DrawLine(_pRegionShadow, sr.RB.X, sr.LT.Y, sr.RB.X, sr.RB.Y);
                    rp.Graphics.DrawLine(_pRegionShadow, sr.LT.X, sr.RB.Y, sr.RB.X, sr.RB.Y);

                    rp.Graphics.FillRectangle(lgb, sr);
                    lgb.Dispose();
                    #endregion
                    #region タイトルボーダー
                    Brush _bd = new SolidBrush(Color.FromArgb(64, 0, 0, 0));
                    var   b   = 8;
                    var   w3  = sr.Width / 4;
                    var   pst = new Point[] {
                        new Point(sr.LT.X, sr.LT.Y + b + 16), new Point(sr.LT.X, sr.LT.Y), new Point(sr.RB.X, sr.LT.Y),
                    };
                    var psb = new Point[] {
                        new Point(sr.RB.X, sr.LT.Y + b), new Point(sr.RB.X - w3, sr.LT.Y + b + 2), new Point(sr.RB.X - w3 * 2, sr.LT.Y + b + 8), new Point(sr.RB.X - w3 * 3, sr.LT.Y + b + 16), new Point(sr.LT.X, sr.LT.Y + b + 16),
                    };
                    var ps = new Point[pst.Length + psb.Length];
                    int i;
                    for (i = 0; i < pst.Length; i++)
                    {
                        ps[i] = pst[i];
                    }

                    for (var j = 0; j < psb.Length; j++)
                    {
                        ps[i++] = psb[j];
                    }

                    rp.Graphics.FillPolygon(_bd, ps);
                    _bd.Dispose();
                    // ハイライト
                    using (var p = new Pen(Color.FromArgb(96, 255, 255, 255)))
                    {
                        rp.Graphics.DrawLines(p, pst);
                    }
                    // シャドウ
                    using (var p = new Pen(Color.FromArgb(96, 0, 0, 0)))
                    {
                        rp.Graphics.DrawLines(p, psb);
                    }
                    #endregion

                    // タイトルメッセージ
                    var btr = sr.Clone() as ScreenRect;
                    btr.RB.X = btr.LT.X + 24;
                    btr.RB.Y = btr.LT.Y + 12;
                    btr     += XyBase.FromInt(4, 4);
                    var titlestr = Mes.Current["LogGroupPanel", "Title"];
                    rp.Graphics.DrawString(titlestr, _fontTitle, new SolidBrush(Color.FromArgb(192, 192, 255)), btr.LT.X, btr.LT.Y);
                    btr += XyBase.FromInt((int)rp.Graphics.MeasureString(titlestr, _fontTitle).Width + 8, 0);

                    // 表示レベルボタン
                    _clickArea.Clear();
                    ScreenPos pos;
                    pos = savePos(LLV.ERR, btr.LT + XyBase.FromInt(0 - (int)(LOG.JumpErr.R / 2), LOG.JumpErr.Y));
                    rp.Graphics.DrawImage(LOG.ErrSw ? Properties.Resources.lp_Err_on : Properties.Resources.lp_Err_off, pos.X, pos.Y, (float)(LOG.JumpErr.R + Properties.Resources.lp_Err_on.Width), (float)(LOG.JumpErr.R + Properties.Resources.lp_Err_on.Height));
                    pos = savePos(LLV.WAR, btr.LT + XyBase.FromInt(22 - (int)(LOG.JumpWar.R / 2), LOG.JumpWar.Y));
                    rp.Graphics.DrawImage(LOG.WarSw ? Properties.Resources.lp_War_on : Properties.Resources.lp_War_off, pos.X, pos.Y, (float)(LOG.JumpWar.R + Properties.Resources.lp_War_on.Width), (float)(LOG.JumpWar.R + Properties.Resources.lp_War_on.Height));
                    pos = savePos(LLV.INF, btr.LT + XyBase.FromInt(44 - (int)(LOG.JumpInf.R / 2), LOG.JumpInf.Y));
                    rp.Graphics.DrawImage(LOG.InfSw ? Properties.Resources.lp_Inf_on : Properties.Resources.lp_Inf_off, pos.X, pos.Y, (float)(LOG.JumpInf.R + Properties.Resources.lp_Inf_on.Width), (float)(LOG.JumpInf.R + Properties.Resources.lp_Inf_on.Height));
                    pos = savePos(LLV.DEV, btr.LT + XyBase.FromInt(66 - (int)(LOG.JumpDev.R / 2), LOG.JumpDev.Y));
                    rp.Graphics.DrawImage(LOG.DevSw ? Properties.Resources.lp_Dev_on : Properties.Resources.lp_Dev_off, pos.X, pos.Y, (float)(LOG.JumpDev.R + Properties.Resources.lp_Dev_on.Width), (float)(LOG.JumpDev.R + Properties.Resources.lp_Dev_on.Height));

                    // クローズボタン
                    pos = savePos(0, btr.LT + XyBase.FromInt(100 - (int)(LOG.JumpDev.R / 2), LOG.JumpDev.Y));
                    rp.Graphics.DrawImage(LOG.DevSw ? Properties.Resources.Cancel : Properties.Resources.Cancel, (float)pos.X, pos.Y, 16, 16);

                    // テキスト表示領域のみ
                    sr.Deflate(2);
                    sr.LT.X += 16;
                    sr.LT.Y += b + 16;
                    // for test		rp.Graphics.DrawLine(Pens.White, sr.LT, sr.RB);

                    // メッセージ表示
                    var   ms        = rp.Graphics.MeasureString("AX08iIay", _font);
                    float lm        = 2; // 行間
                    var   y1        = ms.Height + lm;
                    var   dispLineN = (int)(sr.Height / y1);
                    float curN      = LOG.GetCurrentCount();
                    float btY;
                    if (curN < dispLineN)
                    {
                        btY = sr.RB.Y - (int)(dispLineN - curN + 1) * y1;
                    }
                    else
                    {
                        btY = sr.RB.Y - y1;
                    }
                    var lu = LOG.GetCurrentLast();

                    for (; ;)
                    {
                        if (btY < sr.LT.Y - 2 || lu == null)
                        {
                            break;
                        }

                        var br = _bInf;
                        switch (lu.Value.Level)
                        {
                        case LLV.WAR:
                            br = _bWar;
                            break;

                        case LLV.ERR:
                            br = _bErr;
                            break;

                        case LLV.DEV:
                            br = _bDev;
                            break;

                        case LLV.INF:
                            br = _bInf;
                            break;

                        case LLV.TODO:
                            br = _bTodo;
                            break;
                        }
                        rp.Graphics.DrawString(lu.Value.Mes, _font, br, new PointF(sr.LT.X, btY));
                        rp.Graphics.DrawLine(_pLine, sr.LT.X, btY + y1 - 3, sr.RB.X, btY + y1 - 3);
                        if (lu.Value.Icon != null)
                        {
                            rp.Graphics.DrawImageUnscaled(lu.Value.Icon, sr.LT.X - 17, (int)(btY - 1));
                        }
                        btY -= y1;
                        lu   = lu.Previous;
                    }
                }
                return(true);
            }
Beispiel #7
0
 /// <summary>
 /// ボタンUpイベント
 /// </summary>
 /// <param name="e"></param>
 public virtual void OnMouseUp(MouseState e)
 {
     _posDown    = null;
     _zoomDown   = null;
     _scrollDown = null;
 }
Beispiel #8
0
        /// <summary>
        /// マウスMoveイベント
        /// </summary>
        /// <param name="e"></param>
        public virtual void OnMouseMove(MouseState e)
        {
            if (_posDown == null || _zoomDown == null || _scrollDown == null || e.Pane == null)
            {
                return;
            }

            if (e.Attr.Equals(_trigger))
            {
                // 画面の拡大/縮小
                ScreenPos movePos = e.Pos - _posDown;          // カーソルの移動量の計算
                ScreenPos pdBak   = (ScreenPos)_posDown.Clone();
                if (_isCenterLock)
                {
                    _posDown.X = e.Pane.GetPaneRect().LT.X + (e.Pane.GetPaneRect().RB.X - e.Pane.GetPaneRect().LT.X) / 2;
                    _posDown.Y = e.Pane.GetPaneRect().LT.Y + (e.Pane.GetPaneRect().RB.Y - e.Pane.GetPaneRect().LT.Y) / 2;
                }

                XyBase zoomNow = _zoomDown + movePos * 3;      // ズーム値の算出  速度変更(高解像度に伴い) 2016.11.15 Tono 2→3

                // ズーム値を規定範囲内に収める
                if (zoomNow.X > 4000)
                {
                    zoomNow.X = 4000;
                }

                if (zoomNow.Y > 4000)
                {
                    zoomNow.Y = 4000;
                }

                if (zoomNow.X < 5)
                {
                    zoomNow.X = 5;
                }

                if (zoomNow.Y < 5)
                {
                    zoomNow.Y = 5;
                }

                if (_isSameXY)
                {
                    zoomNow.Y = zoomNow.X;
                }

                Pane.Zoom = (XyBase)zoomNow.Clone();           // ズーム値の反映

                // クリックした位置を基準にしてズームするように画面をスクロールする。
                double ZoomRatioX = (double)zoomNow.X / _zoomDown.X;                        // X方向のズーム率の算出
                double ZoomRatioY = (double)zoomNow.Y / _zoomDown.Y;                        // Y方向のズーム率の算出

                ScreenPos beforeDownPos = _posDown - _scrollDown - e.Pane.GetPaneRect().LT; //
                ScreenPos afterDownPos  = ScreenPos.FromInt((int)(ZoomRatioX * beforeDownPos.X), (int)(ZoomRatioY * beforeDownPos.Y));

                if (_noscrollmove.value == false)
                {
                    Pane.Scroll = _scrollDown - (afterDownPos - beforeDownPos);
                }
                else
                {
                    _noscrollmove.value = false;
                }
                Pane.Invalidate(null);
                _posDown = pdBak;
            }
            else
            {
                OnMouseUp(e);
            }
        }