Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#72

AW: Circular spectrum visualizer

  Alt 4. Apr 2019, 12:55
Ach ja: Das GDIP_BitmapUnlockBits solltest du erst aufrufen nachdem du mit den Änderungen am Bild fertig bist.
Hatte das vorher mal versucht danach hatte er nicht mehr gerendert..
Aber du hast recht habe es geändert so funktioniert es.

So gehts.
Delphi-Quellcode:
  case FEffect of
    0:
      begin
        d := round(FFade * 255);

        if GDIP_BitmapLockBits(imgSpectrum, nil, ImageLockModeRead or ImageLockModeWrite,
          PixelFormat32bppARGB, @BitmapData) = OK then
        begin
          for Row := 0 to BitmapData.Height - 1 do
          begin
            RGBQuad := Scanline(BitmapData, Row);

            for Col := 0 to BitmapData.Width - 1 do
            begin
              Pixel := RGBQuad^;
              alpha := Pixel.rgbReserved;

              if alpha >= d then
                Pixel.rgbReserved := alpha - d
              else
              Pixel.rgbReserved := 0;

              RGBQuad^ := Pixel;
              inc(RGBQuad);
            end;
          end;
          GDIP_BitmapUnlockBits(imgSpectrum, @BitmapData);
        end;
      end;
Das mit dem Array war einfach nichts.

Ich habe versucht aus einen Leeren Bitmap Alpha werte zu extrahieren die nicht vorhanden waren. Wie soll das auch gehen bei einem leeren Array.
Irgendwo wurde das in VB initialisiert aber der Punkt ist nicht auszumachen.
Aber ich denke es geht auch so.

gruss

Geändert von EWeiss ( 4. Apr 2019 um 13:55 Uhr)
  Mit Zitat antworten Zitat