Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[C#] problema col paint D=

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[C#] problema col paint D=

Messaggioda max96696 » mer lug 06, 2011 8:10 am

ciao a tutti =D nuovo problema =D

sono riuscito a creare un piccolo paint con tunzioni basilari (colore, forme, dimensione, apri immagine, chiudi e SALVA)
è proprio su quest' ultimo salva che si basa il problema
io ho un panel (panel1 per la precisione, ma sarebbe lo stesso anche con una picturebox, ho testato) su cui disegno qualcosa, faccio salva, e mi compare il file salvato, ma bianco (colore di sfondo del panel)

oltre al panel mi avvalgo (si dice cosi? mah!) di uno oggetto 'Graphic' G1, su cui faccio le modifiche, che però non salva nel panel1.Image (l' immagine del panel)

vorrei creare un oggetto bitmap che racchiude all' inizio il panel, e ogni modifica fatta mi incorpora il G1, così salvo il bitmap e sono aposto =D

il problema è: COME SI FAAA ??????
vi posto il codice del form1:

Codice: Seleziona tutto
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        bool paint = false;
        SolidBrush color;
        public Color coloreScelto;
        public int forma = 1;
        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Graphics g1 = panel1.CreateGraphics();
            g1.Clear(panel1.BackColor);
        }

        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            paint = true;
            try
            {
                int dimensionix = int.Parse(textBox1.Text);
                int dimensioniy = int.Parse(textBox2.Text);
                int angoloinizio = int.Parse(textBox3.Text);
                int angolofine = int.Parse(textBox4.Text);
                color = new SolidBrush(coloreScelto);
                Graphics g1 = panel1.CreateGraphics();
                if (forma == 1) { g1.FillEllipse(color, e.X, e.Y, dimensionix, dimensioniy); }
                if (forma == 2) { g1.FillRectangle(color, e.X, e.Y, dimensionix, dimensioniy); }
                if (forma == 3) { g1.FillPie(color, e.X, e.Y, dimensionix, dimensioniy, angoloinizio, angolofine); }
            }
            catch
            {
                MessageBox.Show("Errore","Errore");
            }
        }

        private void panel1_MouseUp(object sender, MouseEventArgs e)
        {
            paint = false;
        }

        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            try
            {
                if (paint)
                {
                    int dimensionix = int.Parse(textBox1.Text);
                    int dimensioniy = int.Parse(textBox2.Text);
                    int angoloinizio = int.Parse(textBox3.Text);
                    int angolofine = int.Parse(textBox4.Text);
                    color = new SolidBrush(coloreScelto);
                    Graphics g1 = panel1.CreateGraphics();
                    if (forma == 1) { g1.FillEllipse(color, e.X, e.Y, dimensionix, dimensioniy); }
                    if (forma == 2) { g1.FillRectangle(color, e.X, e.Y, dimensionix, dimensioniy); }
                    if (forma == 3) { g1.FillPie(color, e.X, e.Y, dimensionix, dimensioniy, angoloinizio, angolofine); }
                }
            }
            catch(Exception ecc)
            {
                MessageBox.Show("Errore: " + "\n" + "\n" + ecc + "\n" + "\n" + "Controllare di aver inserito le dimensioni negli appositi banchi del testo(X e Y)", "Errore", MessageBoxButtons.OK);
            }
        }

//parte dove gestisco i colori

private void button12_Click(object sender, EventArgs e)
        {
            OpenFileDialog open=new OpenFileDialog();
            open.Filter="BMP image (*.bmp)|*.bmp";

            if (open.ShowDialog() == DialogResult.OK)
            {
                Image im = Image.FromFile(open.FileName);
                panel1.BackgroundImage = im;
            }
        }

        private void button13_Click(object sender, EventArgs e)
        {
            SaveFileDialog salva = new SaveFileDialog();
            salva.Filter = "BMP images (*.bmp)|*.bmp";
            if (salva.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    int larghezza = panel1.Width;
                    int altezza = panel1.Height;

                    Bitmap immagine = new Bitmap(larghezza, altezza);
                    Rectangle rettangolo = new Rectangle(0, 0, larghezza, altezza);

                    panel1.DrawToBitmap(immagine, rettangolo);
                    immagine.Save(salva.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
                }
                catch(Exception ecc)
                {
                    MessageBox.Show("Adesso so' cavoli amari: "+ecc,"So' uccelli senza zucchero");
                }
            }
        }

   // altri colori
   //gestione forme



se qualcuno riesce a risolvermi il problema è un grandissimo perché il salvataggio immagini è l' ultimo tocco che devo dare alla mia calcolatrice (vedrete il perché) prima di pubblicarla su MegaLab.it

p.s.: sarà pubblicata tra poco su http://www.MegaLab.it/7534 =D
Avatar utente
max96696
Aficionado
Aficionado
 
Messaggi: 103
Iscritto il: lun mar 28, 2011 2:12 pm

Re: [C#] problema col paint D=

Messaggioda max96696 » gio lug 07, 2011 5:33 pm

ce l'ho fatta da solo ma siccome non mi ha risposto non vi dico come =P

no dai:
1. ho creato un' immagine "Image img=Image.FromFile(percorso)"---> non sono riuscito a mettere img =panel1.BackgrondImage
2. ho creato un oggetto graphics "Graphics g1=Graphics.FromImage(omg)" a cui applico le modifiche che verranno salvate in img
3. creo un altro ogg graphic "graphic g2=panel1.CreateGraphics" e poi "g2.DrawImage(img, 0, 0) dove ci disegno l' immagine img a cui ho applicato le modifiche

grazie a DeveloperWinMe che come al solito ha perso (inutilmente per sfortuna) del tempo sempre x colpa mia ^_^ grazie [brindisi]
Avatar utente
max96696
Aficionado
Aficionado
 
Messaggi: 103
Iscritto il: lun mar 28, 2011 2:12 pm


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron
Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising