示例#1
0
        public override void ToolMouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                RectangleWithText rectangle1 = (this.classDiagram.listDrawingObjects[0] as RectangleWithText);
                RectangleWithText rectangle2 = (this.classDiagram.listDrawingObjects[1] as RectangleWithText);
                RectangleWithText rectangle3 = (this.classDiagram.listDrawingObjects[2] as RectangleWithText);

                int width  = e.X - rectangle1.X;
                int height = e.Y - rectangle1.Y;
                height /= 3;

                if (width > 0 && height > 0)
                {
                    //1
                    rectangle1.Width  = width;
                    rectangle1.Height = height * 2;

                    //2
                    rectangle2.Width  = width;
                    rectangle2.Height = height / 2;
                    rectangle2.Y      = rectangle1.Y + rectangle1.Height;

                    //3
                    rectangle3.Width  = width;
                    rectangle3.Height = height / 2;
                    rectangle3.Y      = rectangle2.Y + rectangle2.Height;
                }
            }
        }
        private void DrawDataCoordinates(Graphics gr, PathData pathData)
        {
            Color textColor = Color.White;
            var   fontSize  = 1.0f;

            //GraphicsState state = gr.Save();

            //gr.ResetTransform();
            //gr.ScaleTransform(10.0f, 10.0f, MatrixOrder.Prepend);
            //gr.TranslateTransform(-1.0f, -10f, MatrixOrder.Prepend);


            using (var drawFont = new System.Drawing.Font("Arial", fontSize))
                using (var drawBrush = new System.Drawing.SolidBrush(textColor))
                {
                    bool nextOneIsTerminator = false;

                    int arrayLength = pathData.Points.Length;
                    for (int i = arrayLength - 1; i >= 0; i--)
                    {
                        var x = pathData.Points[i].X;
                        var y = pathData.Points[i].Y;

                        // Since were enumerating the array backwards,
                        // we want to see if the next Y value is zero.
                        // If the next Y value is zero, then we can stop
                        // rendering values (after we complete the current one)
                        if (y == 0)
                        {
                            nextOneIsTerminator = true;
                        }

                        //var nextIndex = i - 1;
                        //if (nextIndex >= 0)
                        //{
                        //    if (pathData.Points[nextIndex].Y == 0)
                        //    {
                        //        nextOneIsTerminator = true;
                        //    }
                        //}

                        var y2         = y;
                        var drawString = $"{x}x{y}";
                        var drawFormat = new System.Drawing.StringFormat();
                        //gr.DrawString(drawString, drawFont, drawBrush, x, y2, drawFormat);

                        var rect = new RectangleF(new PointF(x, y2), new Size(2, 4));
                        var temp = new RectangleWithText(rect, drawString);
                        temp.Draw(gr);

                        if (nextOneIsTerminator == true)
                        {
                            break;
                        }
                    }
                }

            //gr.Restore(state);
        }