Skocz do zawartości

[Tut/C#]Program do rysowania


Gość Pan Szymek

Rekomendowane odpowiedzi

Gość Pan Szymek

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

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający forum [Tut/C#]Program do rysowania   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...