ScanLine



  • Wie bekommt man eigentlich bei scnaline die einzelnen Pixelfarben der Zeile?
    Ich habs bisher mit Pixels[x][y] gemacht, will das aber schneller haben.

    Danke im Voraus.

    PS: Junix, lass das bitte offen, ich hab bisher zu dieser frage noch keine antwort.



  • Ne.... hier bleibt die nächsten 5 Stunden zu. Ich hoffe bis dahin hast du dich beruhigt und weisst, wie man sich zu benehmen hat.

    -junix



  • Das ist das Beispiel aus der Borlandhilfe.. ich habe bis jetzt noch nie mit Scanline gearbeitet.. aber ich kommentiere mal wie ich es sehe... vielleicht hilft es.. und wenn nicht wird mich bestimmt jemand berichtigen können.

    void __fastcall TForm1::Button1Click(TObject *Sender) //blabla :)
    {
      Graphics::TBitmap *pBitmap = new Graphics::TBitmap();//auch klar
      Byte *ptr;
      try
      {
        pBitmap->LoadFromFile("C:\\Program Files\\Common Files\\Borland Shared\\Images\\Splash\\256color\\factory.bmp "); //laden des Bitmaps
        for (int y = 0; y < pBitmap->Height; y++) //Schleife über die Anzahl der BMP-Zeilen
        {
          ptr = (Byte *)pBitmap->ScanLine[y]; //Zeiger auf eine Zeile
          for (int x = 0; x < pBitmap->Width; x++)//Schleife für das Pixelweise durchgehen
          {
            ptr[x] //Zugriff auf einen Pixel in Linie Y / Pixel X
    
          }
        }
      }
      catch (...)
      {
        ShowMessage("Bitmap konnte nicht geladen oder geändert werden!");
      }
      delete pBitmap;
    }
    

    Die Dokumentation darüber ist zumindest in meinen Büchern ziemlicher Schrott.. 🙂
    Du kriegst bei Scanline einen Offset und musst dann wirklich Byteweise vorgehen und kannst so jeden Pixel ansprechen.
    Das obige Beispiel ist für ein 8 bit BMP.. wenn du eine 16 BIT Farbpalette hast dann wirst du bei beim Zugriff X*2 machen müssen da jeder Pixel dann 2 Byte belegt. 24 wäre dann 3...
    Ich hoffe geholfen zu haben *g*.

    Falls ich irgendwo einen Bug reingebracht habe wäre ich für eine Berichtigung direkt dankbar!!!

    Gruß

    Mike


Anmelden zum Antworten