Untitled

 avatar
unknown
plain_text
a year ago
4.2 kB
6
Indexable
        enum Tool
        {
            Pencil,
            Eraser,
            Elipse,
            Rectangle,
            Line
        }

        Bitmap bitmap;
        Graphics graphics;
        bool canPaint=false;

        Pen pencil = new Pen(Color.Black, 1);
        Pen eraser = new Pen(Color.White, 30);
        Point Start, End;

        int width, height;
        Point shapeStart, shapeEnd;

        Tool actualTool = Tool.Pencil;
        ColorDialog color = new ColorDialog();

        public Form1()
        {
            InitializeComponent();
            bitmap = new Bitmap(Canvas.Width, Canvas.Height);
            graphics = Graphics.FromImage(bitmap);
            Canvas.Image = bitmap;
            pbColor.BackColor = Color.Black;
        }

        private void btnClear_Click(object sender, System.EventArgs e)
        {
            graphics.Clear(Color.White);
            /*do sprawdzenia*/
            Canvas.Image = bitmap;
        }

        private void Canvas_MouseDown(object sender, MouseEventArgs e)
        {
            canPaint = true;
            /*współrzędne kursora*/
            Start = e.Location;
            End = e.Location;

            /*wspołrzędne rysowanej figury*/
            shapeStart = e.Location;
        }

        private void Canvas_MouseUp(object sender, MouseEventArgs e)
        {
            canPaint = false;

            //width = Math.Abs(shapeEnd.X - shapeStart.X);
            //height = Math.Abs(shapeEnd.Y - shapeStart.Y);
            if (actualTool == Tool.Rectangle)
                graphics.DrawRectangle(pencil, shapeStart.X, shapeStart.Y, width, height);
            if (actualTool == Tool.Elipse)
                graphics.DrawEllipse(pencil, shapeStart.X, shapeStart.Y, width, height);
            if (actualTool == Tool.Line)
                graphics.DrawLine(pencil, shapeStart, shapeEnd);
        }

        private void btnElipse_Click(object sender, EventArgs e)
        {
            actualTool = Tool.Elipse;
        }

        private void btnRectangle_Click(object sender, EventArgs e)
        {
            actualTool = Tool.Rectangle;
        }

        private void btnLine_Click(object sender, EventArgs e)
        {
            actualTool = Tool.Line;
        }

        private void Canvas_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            if (canPaint)
            {
                if (actualTool == Tool.Rectangle)
                    g.DrawRectangle(pencil, shapeStart.X, shapeStart.Y, width, height);
                if (actualTool == Tool.Elipse)
                    g.DrawEllipse(pencil, shapeStart.X, shapeStart.Y, width, height);
                if (actualTool == Tool.Line)
                    g.DrawLine(pencil, shapeStart, shapeEnd);
            }
        }

        private void btnColor_Click(object sender, EventArgs e)
        {
            if (color.ShowDialog() != DialogResult.OK)
                return;

            pencil.Color = color.Color;
            pbColor.BackColor = color.Color;
        }

        private void btnPencil_Click(object sender, System.EventArgs e)
        {
            actualTool = Tool.Pencil;
        }

        private void btnEraser_Click(object sender, System.EventArgs e)
        {
            actualTool = Tool.Eraser;
        }

        private void Canvas_MouseMove(object sender, MouseEventArgs e)
        {
            if (canPaint)
            {
                if (actualTool == Tool.Pencil)
                {
                    End = e.Location;
                    graphics.DrawLine(pencil, Start, End);
                    Start = End;
                }
                else if (actualTool == Tool.Eraser)
                {
                    End = e.Location;
                    graphics.DrawLine(eraser, Start, End);
                    Start = End;
                }
            }

            Canvas.Refresh();
            shapeEnd = e.Location;
            width = Math.Abs(shapeEnd.X - shapeStart.X);
            height = Math.Abs(shapeEnd.Y - shapeStart.Y);
        }
Editor is loading...
Leave a Comment