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