Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[vc++] Zmiana koloru piksela wybranego myszką

zak293 05 Sty 2010 20:14 1435 6
  • #1 05 Sty 2010 20:14
    zak293
    Poziom 9  

    Witam,

    potrzebuję zamienić dany piksel obrazka po kliknięciu na niego na jakiś kolor.

    Program działa ale nie do końca poprawnie tzn źle obliczam położenie danego piksela w tablicy bajtów.

    Proszę o pomoc w wyznaczeniu odpowiedniej pozycji danego piksela w tablicy.

    Code:

    private: System::Void pictureBox1_Move(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e)
    {

    // koloryRGB to tablica bajtów(index od zera) w której zapisane są poszczególne piksele w formacie : GBRGBRGBRGBR........ itd w jednej linii (tablica jednowymiarowa)
    // colorDialog1 to paleka z której pobieram kolor i jego skladowe

    int wart,wart1, szer=this->pictureBox1->Image->Width*3;
    this->image->LockBits( this->rect, System::Drawing::Imaging::ImageLockMode::ReadWrite, this->image->PixelFormat );
    wart = ((e->Y)*(szer)+((e->X*3)));// tu obliczam wartość piksela w tablicy ale źle....
       
                    koloryRGB[wart]=colorDialog1->Color.B;
                    koloryRGB[wart+1]=colorDialog1->Color.G;
                    koloryRGB[wart+2]=colorDialog1->Color.R;

      System::Runtime::InteropServices::Marshal::Copy( this->koloryRGB, 0, this->ptr, this->bytes );
                 image->UnlockBits( this->bmpData );
                 this->pictureBox1->Image = image;
    }



    Dziękuje za pomoc
    Pozdrawiam

    0 6
  • #3 10 Sty 2010 12:32
    zak293
    Poziom 9  

    Bitmap, można getpixel ale chce na tablicach bo tak jest o wiele szybciej.

    0
  • #5 10 Sty 2010 14:39
    zak293
    Poziom 9  

    Sprawdziłem w praktyce i na tablicach poprzez wskaźnik jest zdecydowanie szybciej ;)

    0
  • #7 10 Sty 2010 16:28
    zak293
    Poziom 9  

    tak bitmapa24 bit

    0