Einzelnen Beitrag anzeigen

mcjoin

Registriert seit: 14. Jul 2003
7 Beiträge
 
#2

Re: Überblendung zweier Bitmaps

  Alt 13. Sep 2004, 16:40
du kannst die bilder in tbitmap lesen und pixel per pixel die Farbkanäle mischen.
kleines Beispiel:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
type
  TRGBArray = array[0..32767] of TRGBTriple;
  PRGBArray = ^TRGBArray;
var
  x, y: Integer;
  RowA,RowB: PRGBArray;
  bmp1,bmp2 : tbitmap;
begin
  bmp1 := image2.Picture.Bitmap;
  bmp2 := image3.Picture.Bitmap;

  try
  bmp1.PixelFormat := pf24bit;
  for y := 0 to bmp1.Height -1 do
  begin
    rowA := bmp1.ScanLine[y];
    rowB := bmp2.ScanLine[y];
    for x := 0 to bmp1.Width - 1 do
    begin
      rowA[x].rgbtRed := (rowA[x].rgbtRed + rowB[x].rgbtRed) div 2;
      rowA[x].rgbtGreen := (rowA[x].rgbtGreen + rowB[x].rgbtGreen) div 2;
      rowA[x].rgbtBlue := (rowA[x].rgbtBlue + rowB[x].rgbtBlue) div 2;
    end;
  end;
  finally
   image1.Picture.Bitmap := bmp1;
  end;
P.S. : vergiss nicht dass es bloß ein beispiel ist. Anpassungen und SchnickSchnack wie skalieren und prozentuales Mischen habe ich nicht reingebaut. Das zweite Bild wird jedes mal OnClick um 50 % mit dem ersten gemischt.
  Mit Zitat antworten Zitat