Gość Pan Szymek Opublikowano 28 Września 2012 Udostępnij Opublikowano 28 Września 2012 Zacznijmy od przejścia do Program.cs i utworzenia klasy, w której będziemy działać wraz ze zmiennymi, które nam się potem przydadzą class okno : Form { Graphics g; Pen p; Point pkt; public okno() { } Dodajmy teraz do konstruktora kod, który dostosuje okno do naszej wizji this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.MaximizeBox = false; this.Size = new Size(300, 300); Następnie utworzymy PictureBoxa, w którym będziemy rysować, w którym będzie prezentowany aktualny kolor oraz przycisk do zapisywania PictureBox pb_obraz = new PictureBox() { BackColor = Color.White, Size = new Size(219, 237), Location = new Point(12, 12), }; PictureBox pb_kolor = new PictureBox() { BackColor = Color.Black, BorderStyle = BorderStyle.Fixed3D, Size = new Size(35, 30), Location = new Point(237, 12), }; Button btn_zapisz = new Button() { Text = "Z\na\np\ni\ns\nz", Location = new Point(237, 48), Size = new Size(35, 87), }; Czas zainicjalizować (jest takie słowo?) nasze zmienne pb_obraz.Image = new Bitmap(pb_obraz.Width, pb_obraz.Height); g = Graphics.FromImage(pb_obraz.Image); p = new Pen(Color.Black); Przejdźmy do najważniejszej części - rysowania, wybierania koloru i zapisywania pb_obraz.MouseDown += new MouseEventHandler((object send, MouseEventArgs me) => { pkt = me.Location; }); pb_obraz.MouseMove += new MouseEventHandler((object send, MouseEventArgs me) => { if (me.Button == System.Windows.Forms.MouseButtons.Left) { g.DrawLine(p, pkt, me.Location); pkt = me.Location; pb_obraz.Refresh(); } }); pb_kolor.Click += new EventHandler((object send, EventArgs args) => { ColorDialog cd = new ColorDialog(); if (cd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; pb_kolor.BackColor = cd.Color; p.Color = cd.Color; }); btn_zapisz.Click += new EventHandler((object send, EventArgs args) => { SaveFileDialog sfd = new SaveFileDialog(); sfd.FileName = ""; sfd.Filter = "Obraz|*.bmp"; if (sfd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; pb_obraz.Image.Save(sfd.FileName); }); No i dodajmy kontrolki do okna this.Controls.Add(pb_obraz); this.Controls.Add(pb_kolor); this.Controls.Add(btn_zapisz); Zawartość Program.cs po skończeniu: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Drawing; namespace WindowsFormsApplication2 { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [sTAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new okno()); } } class okno : Form { Graphics g; Pen p; Point pkt; public okno() { this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.MaximizeBox = false; this.Size = new Size(300, 300); PictureBox pb_obraz = new PictureBox() { BackColor = Color.White, Size = new Size(219, 237), Location = new Point(12, 12), }; PictureBox pb_kolor = new PictureBox() { BackColor = Color.Black, BorderStyle = BorderStyle.Fixed3D, Size = new Size(35, 30), Location = new Point(237, 12), }; Button btn_zapisz = new Button() { Text = "Z\na\np\ni\ns\nz", Location = new Point(237, 48), Size = new Size(35, 87), }; pb_obraz.Image = new Bitmap(pb_obraz.Width, pb_obraz.Height); g = Graphics.FromImage(pb_obraz.Image); p = new Pen(Color.Black); pb_obraz.MouseDown += new MouseEventHandler((object send, MouseEventArgs me) => { pkt = me.Location; }); pb_obraz.MouseMove += new MouseEventHandler((object send, MouseEventArgs me) => { if (me.Button == System.Windows.Forms.MouseButtons.Left) { g.DrawLine(p, pkt, me.Location); pkt = me.Location; pb_obraz.Refresh(); } }); pb_kolor.Click += new EventHandler((object send, EventArgs args) => { ColorDialog cd = new ColorDialog(); if (cd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; pb_kolor.BackColor = cd.Color; p.Color = cd.Color; }); btn_zapisz.Click += new EventHandler((object send, EventArgs args) => { SaveFileDialog sfd = new SaveFileDialog(); sfd.FileName = ""; sfd.Filter = "Obraz|*.bmp"; if (sfd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; pb_obraz.Image.Save(sfd.FileName); }); this.Controls.Add(pb_obraz); this.Controls.Add(pb_kolor); this.Controls.Add(btn_zapisz); } } } Gotowy projekt: http://142.4.197.230/pliki/paint[mpc].zip Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Zarchiwizowany
Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.