NV Napisano 7 Marzec 2010 Napisano 7 Marzec 2010 Cześć ! Czy jest osoba, która zna ten język i napisała by za darmo jakieś elementy programu lub tłumaczyła to i owo ? To nie są trudne rzeczy bo do szkoły. Chodzi o programowanie obiektowe w visualu. Nizej link do "RYSOWNIKA" strasznie niedopracowany ale tylko na tyle potrafiłęm :( Nie wiem jak zrobić cofanie operacji itp. 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; using System.Drawing.Drawing2D; using System.IO; namespace RYSOWNIK { public partial class Rysownik : Form { private Point d = Point.Empty; private Point c = Point.Empty; private Graphics g; private Point p = Point.Empty; public Pen pioro; public Color kolorek; bool shouldPaint = false; string plik = ""; public Rysownik() { InitializeComponent(); imgObrazek.Image = new Bitmap(1300,650); Bitmap bmp = new Bitmap(imgObrazek.Image); g = Graphics.FromImage(bmp); Color kolorek = Color.Black; pioro = new Pen(kolorek, 1); Graphics objGraphics = this.imgObrazek.CreateGraphics(); this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.imgObrazek_MouseDown); this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.imgObrazek_MouseUp); this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.imgObrazek_MouseMove); } public void button1_Click(object sender, EventArgs e) { ColorDialog dialog = new ColorDialog(); dialog.Color = Color.Black; kolorek = dialog.Color; podglad.BackColor = dialog.Color; dialog.Color = podglad.BackColor; dialog.ShowDialog(); podglad.BackColor = dialog.Color; pioro.Color = dialog.Color; kolorek = dialog.Color; } private void Rysownik_Load(object sender, EventArgs e) { g.Clear(Color.White); imgObrazek.Refresh(); } private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { } private void imgObrazek_Click(object sender, EventArgs e) { } private void Czysc_Click(object sender, EventArgs e) { g.Clear(Color.White); imgObrazek.Refresh(); } private void a1_MouseClick(object sender, MouseEventArgs e) { pioro.Color = a1.BackColor; kolorek = a1.BackColor; } private void a2_MouseClick(object sender, MouseEventArgs e) { pioro.Color = a2.BackColor; kolorek = a2.BackColor; } private void a3_MouseClick(object sender, MouseEventArgs e) { kolorek = a3.BackColor; pioro.Color = a3.BackColor; } private void a4_Click(object sender, EventArgs e) { kolorek = a4.BackColor; pioro.Color = a4.BackColor; } public void imgObrazek_MouseDown(object sender, MouseEventArgs e) { g.SmoothingMode = SmoothingMode.AntiAlias; int x; x = Convert.ToInt32(textBox1.Text); pioro.Width = x; if (e.Button == MouseButtons.Left) p = e.Location; shouldPaint = true; if (e.Button == MouseButtons.Right) c = e.Location; if (e.Button == MouseButtons.Right) g.DrawLine(pioro, p, c); imgObrazek.Refresh(); } public void imgObrazek_MouseMove(object sender, MouseEventArgs e) { try { int x, y, z; x = Convert.ToInt32(textBox1.Text); y = Convert.ToInt32(textBox2.Text); z = Convert.ToInt32(textBox3.Text); pioro.Width = x; podglad.BackColor = pioro.Color; if (checkBox1.Checked == true) { if (e.Button == MouseButtons.Left) if (shouldPaint) { Graphics graphics = CreateGraphics(); Color kolorek = podglad.BackColor; g.FillEllipse(new SolidBrush(kolorek), e.X, e.Y, z, y); imgObrazek.Refresh(); } } else { g = Graphics.FromImage(imgObrazek.Image); if (e.Button == MouseButtons.Left) { g.SmoothingMode = SmoothingMode.AntiAlias; g.DrawLine(pioro, p, e.Location); p = e.Location; imgObrazek.Refresh(); } if (e.Button == MouseButtons.Right) { c = e.Location; System.Drawing.Graphics graphicsObj; graphicsObj = this.CreateGraphics(); g.SmoothingMode = SmoothingMode.AntiAlias; g.DrawLine(pioro, p, c); imgObrazek.Refresh(); } } } catch { MessageBox.Show("Litere debilu !? LITERE ?!"); Application.Exit(); } } public void textBox1_TextChanged(object sender, EventArgs e) { } private void imgObrazek_DoubleClick(object sender, EventArgs e) { } private void imgObrazek_MouseUp(object sender, MouseEventArgs e) { shouldPaint = false; } private void textBox3_TextChanged(object sender, EventArgs e) { } private void textBox2_TextChanged(object sender, EventArgs e) { } private void checkBox1_CheckedChanged(object sender, EventArgs e) { } private void nowyToolStripMenuItem_Click(object sender, EventArgs e) { g.Clear(Color.White); imgObrazek.Refresh(); } private DialogResult czyZapisac() { DialogResult odp = MessageBox.Show("Chcesz zapisać zmiany?", "Rysownik", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation); if (odp == DialogResult.Yes) zapiszToolStripMenuItem_Click(null, null); return odp; } private void otwórzToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult odp = czyZapisac(); if (odp == DialogResult.Cancel) return; plik = ""; openFileDialog1.Multiselect = false; if (openFileDialog1.ShowDialog() == DialogResult.OK) { StreamReader sr = null; try { sr = new StreamReader(openFileDialog1.FileName); textBox1.Text = sr.ReadToEnd(); } finally { if (sr != null) sr.Close(); } } } private void zapiszToolStripMenuItem_Click(object sender, EventArgs e) { if (plik != "") { SaveFileDialog dialog = new SaveFileDialog(); StreamWriter sw = new StreamWriter(saveFileDialog1.FileName); imgObrazek.Image.Save(dialog.FileName); sw.Close(); } } private void openFileDialog1_FileOk(object sender, CancelEventArgs e) { } private void imgObrazek_Click_1(object sender, EventArgs e) { } private void fontDialog1_Apply(object sender, EventArgs e) { } private void zapiszJakoToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = "bmp|*.bmp|jpeg|*.jpeg"; dialog.ShowDialog(); if (dialog.FileName != "") imgObrazek.Image.Save(dialog.FileName); } private void tłoToolStripMenuItem_Click(object sender, EventArgs e) { ColorDialog dialog = new ColorDialog(); dialog.ShowDialog(); Color tlo = dialog.Color; g.Clear(tlo); imgObrazek.Refresh(); } private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) { } private void zamknijToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } private void cofnijToolStripMenuItem_Click(object sender, EventArgs e) { imgObrazek.Undo(Refresh()); } } } http://eros.vlo.gda.pl/~nvidia/misiak/
Gość Gosc Napisano 7 Marzec 2010 Napisano 7 Marzec 2010 z tego co widac z kodu to mazesz po bitmapie, cofanie operacji mozesz w takim wypadku zrobic tylko jako zapamietanie snapshota z bitmapa, nie masz obiektowej konstrukcji obiektow rysuowanych :( zrob sobie arraya z bitmapami i przechowuj snapshoty, powiedzmy 10 ostatnich i bufor okrezny fifo
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się