Announcement

Collapse
No announcement yet.

Bitmaps transparent überblenden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bitmaps transparent überblenden

    Hallo,<P>
    ich blende momentan 2 kleine bmp's pixelweise durch Kombination der RGB-Werte über. Bei großen Grafiken (800x600) ist das aber viel zu langsam. Kennt jemand eine Komponente, die das schnell erledigt, oder bietet gar die WinApi etwas ähnliches?<p>
    Vielen Dank, Mario
    Schöne Grüße, Mario

  • #2
    Hallo
    vielleicht hilft dir das weiter: mit scanline ist viel schneller als
    getPixel

    ---Schnipp
    var i,y,x,Anzahl:integer;
    P1,p2,p3 : PByteArray;
    begin
    Anzahl:=12;
    For i:= 0 to Anzahl do
    begin
    for y := 0 to image1.Picture.Bitmap.height -1 do
    begin
    P1 := image1.Picture.Bitmap.ScanLine[y];
    p2 := image2.Picture.Bitmap.ScanLine[y];
    p3 := image3.Picture.Bitmap.ScanLine[y];
    for x := 0 to image1.Picture.Bitmap.width -1 do
    begin
    P3[x]:= p1[x]+round((p2[x]-p1[x])/Anzahl*i);
    end;
    end;

    image3.Refresh;
    end;
    image2.Canvas.draw(0,0,image1.Picture.Bitmap);
    image1.Canvas.draw(0,0,image3.Picture.Bitmap);
    end

    Comment


    • #3
      In der Zeitschrift C't in der Ausgabe 2/99 gab es einen Artikel zu
      diesem Thema. Den Beispiel Quellcode kannst du dir von dem Heise
      Server herunterladen. Die Adresse lautet:
      ftp://ftp.heise.de/pub/ct/listings/ct9822.zip. Ich hoffe das hilft dir
      weiter

      Comment


      • #4
        Ich habe das Listing aus der c't 22/98 ausprobiert. Das Überblenden via DIBits funktioniert aber nicht mit größeren Bildern, dann scheitert spätestens der dritte Aufruf der Funktion GetDIBits. Kann es sein, dass die Anwendung nicht genug Speicher zur Verfügung stellt? Wäre komisch, denn eigentlich ist ja genug Speicher frei - und sooo groß sind die Bilder, die ich verwenden möchte auch nicht (640x480). Woran könnte das liegen und wie könnte ich den Fehler beheben?

        Sven Lütkemeie

        Comment

        Working...
        X