Optymalizacja funkcji graficznej

0

Witam, napisałem funkcję, która tworzy negatyw obrazu, tylko działa bardzo wolno. Czytałem, że trzeba użyć ScanLine, tylko że ja nie wiem za bardzo jak. Proszę o wskazówki. Moje środowisko to Visual c++ 2008

System::Drawing::Bitmap^ image;
image = gcnew Bitmap(this->openFileDialog->FileName,true );
int x;
int y;
         for ( y = 0; y < image->Height; y++ )
         {
			 for ( x = 0; x < image->Width; x++ )
            {
				
               Color pixelColor = image->GetPixel( x, y );
               Color newColor = Color::FromArgb( 255-pixelColor.R, 255-pixelColor.G, 255-pixelColor.B );
               image->SetPixel( x, y, newColor );
			   
            }

         } 
0

nie chce Cie od razu kierowac do unsafe'a, wiec wpierw zerknij na to: http://blogs.msdn.com/windowsmobile/archive/2008/04/15/faster-c.aspx
to jest co prawda w C# i na .net CF, ale sens jest na tyle prostu (LockPixels) ze powinno Ci sie z tego wyciachac co Ci potrzebne zeby NIE ROBIC teog poprzez Get/SetPixel - bo to wlasnie generuje Ci wiekszość czasu w tej chwili, nie mowiac o ciaglym Color::From..

0

Wskazówka: duużo szybciej niż GetPixel / SetPixel funkcje WinAPI:
GetDIBits
SetDIBits

1 użytkowników online, w tym zalogowanych: 0, gości: 1