Witam. Mam pewien problem. Na zaliczenie muszę zrobić program MiniPaint, z opcją wczytywania i zapisywania pliku, zmiany koloru pędzla, gumki, czyszczenie ekranu i rysowanie elips, prostokątów i linii. Mam wszystko oprócz 3 ostatnich rzeczy. Nie umiem sobie z tym dać rady. Jak zrobić żeby po kliknięciu na formie odpowiednich przycisków rysował się okrą, prostokąt lub linia?? Może to być tylko rysowanie jednego elementu po jednokrotnym naciśnięciu buttona.
Kod programu:
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 MiniPaint
{
public partial class frmMiniPaint : Form
{
private Graphics g;
private Point p = Point.Empty;
private Pen pioro;
private Pen gumka;
public int size = 5;
public frmMiniPaint()
{
InitializeComponent();
imgObrazek.Image = new Bitmap(560, 448);
g = Graphics.FromImage(imgObrazek.Image);
pioro = new Pen(Color.Black,size);
gumka = new Pen(Color.White,size*4);
}
private void cmdCzysc_Click(object sender, EventArgs e)
{
g.Clear(Color.White);
imgObrazek.Refresh();
}
private void cmdKolor_Click(object sender, EventArgs e)
{
ColorDialog dialog = new ColorDialog();
dialog.Color = lblKolor.BackColor;
dialog.ShowDialog();
lblKolor.BackColor = dialog.Color;
pioro.Color = dialog.Color;
}
private void zapiszToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "bmp|*.bmp";
dialog.ShowDialog();
if (dialog.FileName != "")
imgObrazek.Image.Save(dialog.FileName);
}
private void otwórzToolStripMenuItem_Click_1(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
Bitmap bmp = new Bitmap(dialog.FileName);
imgObrazek.Image = bmp;
g = Graphics.FromImage(imgObrazek.Image);
}
}
private void imgObrazek_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
p = e.Location;
if (e.Button == MouseButtons.Right)
p = e.Location;
}
private void imgObrazek_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
g.DrawLine(pioro, p, e.Location);
p = e.Location;
imgObrazek.Refresh();
}
if (e.Button == MouseButtons.Right)
{
g.DrawLine(gumka, p, e.Location);
p = e.Location;
imgObrazek.Refresh();
}
}
}}
I forma:
http://img294.imageshack.us/my.php?image=eeewn9.jpg
Jeśli ktoś wie jak dorobić te elementy(zaprogramować) byłbym wdzięczny. Z góry dzięki :)