AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bmp+Farbe mit "or" verknüpfen - kein Copymode vorhanden
Thema durchsuchen
Ansicht
Themen-Optionen

Bmp+Farbe mit "or" verknüpfen - kein Copymode vorhanden

Ein Thema von Cöster · begonnen am 19. Dez 2006 · letzter Beitrag vom 20. Dez 2006
 
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#1

Bmp+Farbe mit "or" verknüpfen - kein Copymode vorh

  Alt 19. Dez 2006, 17:03
Hi!

Es gibt ja jede Menge verschiedene CopyModes (SRCCOPY, ...), aber ich habe keinen gefunden, der das Source-Bitmap mittels "or" mit einer Farbe (z.B. Brush.Color des Dest-Images) verknüpft.

Deswegen hab ich mir dafür selber nen Code geschrieben:

Delphi-Quellcode:
// kopiert "Src or Color" an die Position (AX, AY) des Dest-Bitmaps
procedure DrawOr(const Dest: TBitmap; AX, AY: Integer; const Src: TBitmap; Color: TColor);
type
   TPixArray = array[0..2] of Byte;
var
   Buffer: TBitmap;
   SrcP: ^TPixArray;
   X, Y: Integer;
begin
   Buffer := TBitmap.Create;
   try
      Buffer.SetSize(Src.Width, Src.Height);
      BitBlt(Buffer.Canvas.Handle, 0, 0, Buffer.Width, Buffer.Height,
         Src.Canvas.Handle, 0, 0, SRCCOPY);
      Buffer.PixelFormat := pf24Bit;
      for Y := 0 to Buffer.Height - 1 do
      begin
         SrcP := Buffer.ScanLine[Y];
         for X := 0 to Buffer.Width - 1 do
         begin
            SrcP^[3 * X] := SrcP^[3 * X] or ((Color shr 16) and $FF);
            SrcP^[3 * X + 1] := SrcP^[3 * X + 1] or ((Color shr 8) and $FF);
            SrcP^[3 * X + 2] := SrcP^[3 * X + 2] or (Color and $FF);
         end;
      end;
      Buffer.Transparent := Src.Transparent;
      Buffer.TransparentColor := Src.TransparentColor;
      Dest.Canvas.Draw(AX, AY, Buffer);
   finally
      Buffer.Free;
   end;
end;
Lässt sich dieser Code optimieren? Hab ich ihn umsonst geschrieben, weil es schon irgendwo eine (bessere) Alternative gibt?

[edit]Wertparameter der Objektreferenzen in Konstantenparameter umgewandelt[/edit]
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz