Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

BitBlt und Transparenz

  Alt 4. Mai 2015, 08:26
Ich erstelle ein Spectrogram

Delphi-Quellcode:
procedure TSpectrogram.DrawSpectrogram;
var
  i, k, m: Integer;
  MagLn: Byte;
  x: PByteArray;
  OffsetX: Integer;
  FFTData: TFFTData;
begin

  if BassDataAvailable then
    FFTData := BassChannelGetFFTData;
  begin
    OffsetX := 2;
    for i := 0 to pred(Height) do
    begin
      MagLn := round(Sqrt(FFTData[i + 1]) * 3 * Width);
      k := Height - i - 1;

      x := BuffBMP.ScanLine[k];

      if bRTLScroll then
      begin
        //copy original scanline
        Move(x[OffsetX], x[0], (Width - OffsetX));

        //draw new pixels
        for m := 0 to pred(OffsetX) do
          x[Width - OffsetX + m] := MagLn;
      end
      else
      //Left to right
      begin
        //copy original scanline
        Move(x[0], x[OffsetX], (Width - OffsetX));

        //draw new pixels
        for m := 0 to pred(OffsetX) do
          x[m] := MagLn;
      end;
    end;
  end;

  BitBlt(PaintDC, 0, 0, Width, Height, BuffBMP.Canvas.Handle, 0, 0, SRCCOPY);

  bMonitoring := True;

end;
Das Problem ist nun wenn ich BitBlt verwende und mein Window Transparent ist wird mein
Child-Window auf dem ich das Bitmap kopiere auch Transparent.

Wie kann ich die Daten ohne BitBlt direkt auf mein Child-Window kopieren?
DiBits geht auch nicht falls jemand auf die Idee kommen sollte.


gruss
  Mit Zitat antworten Zitat