Skocz do zawartości

Featured Replies

Napisano

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/

  • Odpowiedzi 1
  • Wyświetleń 707
  • Created
  • Ostatniej odpowiedzi

Popular Days

Napisano

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

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności