operacja na obiektach bitmap

Własne projekty oraz implementacje.

Moderator: xxSlayeRxx

operacja na obiektach bitmap

Sponsor

Sponsor
 

operacja na obiektach bitmap

Postprzez Ultimion » Cz lis 17, 2011 12:21 pm

Mam takie pytanie ... (zdefiniowalem sobie obiekty:

Kod: Zaznacz cały
public partial class Form1 : Form
    {
        Bitmap KopiaPicture, OrygPicture;
...

laduje plik graficzny z pliku do obiektu OrygPicture ...
...
Kod: Zaznacz cały
OrygPicture = new Bitmap(Bitmap.FromFile(openFileDialog1.FileName));
...

i pozniej gdzies na zdarzenie klikniecia w button "negatyw"

Kod: Zaznacz cały
private void button1_Click(object sender, EventArgs e)
        {
            KopiaPicture = OrygPicture; // kopiuje oryginalny obraz do
            kopii i na kopii dokonuje zadanie wykonania negatywu

            int wysokosc = KopiaPicture.Height;
            int szerokosc = KopiaPicture.Width;
            progress.Value = 0;
            progress.Maximum = wysokosc * szerokosc;

            Color pixel;

            for (int x = 0; x < szerokosc; x++)
            {
                for (int y = 0; y < wysokosc; y++)
                {
                    pixel = KopiaPicture.GetPixel(x, y);
                                       
                    if (Nred.Checked == true)  pixel = Color.FromArgb(255 -
                    pixel.R, pixel.G, pixel.B);
                    if (NGreen.Checked == true)  pixel =
                    Color.FromArgb(pixel.R, 255 - pixel.G, pixel.B);
                    if (Nblue.Checked == true)  pixel =
                    Color.FromArgb(pixel.R, pixel.G, 255 - pixel.B);

                    KopiaPicture.SetPixel(x, y, pixel);
                    progress.Value = progress.Value + 1;
                }
            }
            ViewPicture.Image = KopiaPicture; // kopie obrazu przenosze do
            objektu PictureBox  - aby widziec efekt dzialania.
        }


i dziala wszystko ok....
... lecz gdy wcisne guzik anuluj to wykonuje...

Kod: Zaznacz cały
private void button3_Click(object sender, EventArgs e)
        {
            ViewPicture.Image = OrygPicture;
            MenuNegatyw.Visible = false;
            MenuGlowne.Enabled = true;
        }


i o dziwo nie mam obrazka przed wykonaniem na KopiaPicture negatywu...
OrygPicture nie powinien miec negatywu a na ViewPicture (PictureBox)
wyswiatla mi obraz po dokonaniu negatywu :(

zupelnie teraz zgupialem bo nie wiem co jest grane :(

poglbym prosic o sugestie?

Janusz.
Ultimion
New member
 
Posty: 4
Dołączył(a): Cz lis 17, 2011 12:13 pm

Re: operacja na obiektach bitmap

Postprzez Ultimion » Cz lis 17, 2011 12:31 pm

znalazlem błąd.

zamiast kodu:

Kod: Zaznacz cały
KopiaPicture = OrygPicture; // kopiuje oryginalny obraz do
            kopii i na kopii dokonuje zadanie wykonania negatywu


powinno byc:

Kod: Zaznacz cały
KopiaPicture = new Bitmap(OrygPicture); // kopiuje oryginalny obraz do
            kopii i na kopii dokonuje zadanie wykonania negatywu



czy moze mi ktos wyjasnic jak dzialala 1 wersja tej procedury ?

Janusz
Ultimion
New member
 
Posty: 4
Dołączył(a): Cz lis 17, 2011 12:13 pm

Re: operacja na obiektach bitmap

Postprzez Spetzu » Cz lis 17, 2011 3:29 pm

Referencja, w tym przypadku = nie kopiuje wartości tylko wskazuje na ten sam obiekt w pamięci.
Podstawy programowania obiektowego ;)
http://www.gankiewicz.eu - programowanie: aplikacje użytkowe, serwisy internetowe i nie tylko ;)
Spetzu
Member
 
Posty: 196
Dołączył(a): Pt sty 07, 2011 5:31 pm

Re: operacja na obiektach bitmap

Sponsors

Sponsor
 


Powrót do Projekty i kody źródłowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości