Prosty paint w C#

0

Cześć!
Piszę sobie aplikacje w Windows Forms C# działającą jak prosty paint.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Odyn_Draw
{
    public partial class MainForm : Form
    {
        Graphics g;
        Pen p,b;
        int rozmiar;

        public MainForm()
        {
            InitializeComponent();
            g = panel1.CreateGraphics(); // tworzenie grafiki w panelu1
            p = new Pen(Color.Black, rozmiar); // tworzenie dlugopisa o kolorzeczarnym i grubosci 1
            b = new Pen(Color.Black,20);


        }

        int x = 0, y = 0; // polozenie poczatkowe


        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)            // jezeli klikniemy button left 
                g.DrawLine(p, x, y, e.X, e.Y);               //to rysuj

            x = e.X;
            y = e.Y;
        }

        private void clearToolStripMenuItem_Click(object sender, EventArgs e)
        {
            g.Clear(Color.White);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            p.Color = Color.White;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            p.Color = Color.Black;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            p.Color = Color.Brown;
        }

        private void button6_Click(object sender, EventArgs e)
        {
            p.Color = Color.Red;
        }

        private void button5_Click(object sender, EventArgs e)
        {
            p.Color = Color.Orange;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            p.Color = Color.Yellow;
        }

        private void button9_Click(object sender, EventArgs e)
        {
            p.Color = Color.LightGreen;
        }

        private void button8_Click(object sender, EventArgs e)
        {
            p.Color = Color.LightSkyBlue;
        }

        private void button7_Click(object sender, EventArgs e)
        {
            p.Color = Color.Blue;
        }

        private void button12_Click(object sender, EventArgs e)
        {
            p.Color = Color.Green;
        }

        private void button11_Click(object sender, EventArgs e)
        {
            p.Color = Color.Pink;
        }

        private void button10_Click(object sender, EventArgs e)
        {
            p.Color = Color.Purple;
        }



        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void fillToolStripMenuItem_Click(object sender, EventArgs e)
        {


        }

        private void gToolStripMenuItem_Click(object sender, EventArgs e)
        {


        }

        private void penToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (true)
            {
                b.Color = Color.Black;
            }
            
        }

        private void normalLineToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
        }

        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // Displays a SaveFileDialog so the user can save the Image
            // assigned to Button2.
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
            saveFileDialog1.Title = "Save an Image File";
            saveFileDialog1.ShowDialog();

            // If the file name is not an empty string open it for saving.
            if (saveFileDialog1.FileName != "")
            {
                // Saves the Image via a FileStream created by the OpenFile method.
                System.IO.FileStream fs =
                   (System.IO.FileStream)saveFileDialog1.OpenFile();
                // Saves the Image in the appropriate ImageFormat based upon the
                // File type selected in the dialog box.
                // NOTE that the FilterIndex property is one-based.
                switch (saveFileDialog1.FilterIndex)
                {
                    case 1:
                        this.button2.Image.Save(fs,
                           System.Drawing.Imaging.ImageFormat.Jpeg);
                        break;

                    case 2:
                        this.button2.Image.Save(fs,
                           System.Drawing.Imaging.ImageFormat.Bmp);
                        break;

                    case 3:
                        this.button2.Image.Save(fs,
                           System.Drawing.Imaging.ImageFormat.Gif);
                        break;
                }

                fs.Close();
            }


        }

        private void toolStripTextBox1_Click(object sender, EventArgs e)
        {
            
            toolStripTextBox1.Text = rozmiar.ToString();
            p = new Pen(Color.Black, this.rozmiar);

        }
    }
}

Mam do was kilka pytan:

1.Chciałbym zrobić aby po wpisaniu wartośći do textboxa pod BrushSize zmienic grubość Pena na podana

user image

  1. Jak po kliknieciu w przycisk Fill wypelnic caly obszar panelu1? (bo rysuje po panelu1)

  2. Jak po kliknieciu w przycisk Pedzel zmienic z Olwoka na inny pedzel o podanej wielkosc?

Pozdrawiam i z góry dziękuje za pomoc:)

0

Dobra pytanie 1 juz się rozwiązało :D

        private void toolStripTextBox1_Click(object sender, EventArgs e)
        {
           if (toolStripTextBox1 == null)
            {
                toolStripTextBox1.Clear();
            }

            try
            {
                int rozmiar = Convert.ToInt32(toolStripTextBox1.Text);
                toolStripTextBox1.Text = rozmiar.ToString();
                p = new Pen(Color.Black, rozmiar);
            }
            catch (Exception)
            {
                MessageBox.Show("Do textboxa wpisuje sie tylko cyfry!!");
            }
            

        } 

Zrobilem wten sposób:)

0

Jesli chodzi o podpunkt 2 to zrobilem cos takiego


         private void fillToolStripMenuItem_Click(object sender, EventArgs e)
        {
            panel1.BackColor=Color.Tan;

        } 

Ale to zmienia mi tylko jednorazowo na wybrany color a chciałbym ,żeby znowu mozna było wybrać barwę :)

0

colorDialog najlepiej użyć do zmiany koloru

1 użytkowników online, w tym zalogowanych: 0, gości: 1