Entwickler-Ecke

Multimedia / Grafik - Canvas und TRect Problem


bernd29 - Di 23.05.06 09:49
Titel: Canvas und TRect Problem
Hallo ,

Ich hab folgendes Problem. Ich will mir einen Grafic Eqilizer in eine PaintBox Zeichnen.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
procedure TDisplay.RenderWave (HWND : THandle; WaveData : TWaveData; posTime : Integer);
var i,y :LongInt; a : Single; LCh, RCh : SmallInt; X, Rd : Integer; Angle : Single; R, L : SmallInt;
    Rect: integer;
begin
         {Draw Backgraund}
          Buffer.Canvas.Pen.Color := clBlack;
          Buffer.Canvas.Brush.Color := clBlack;
          Buffer.Canvas.Brush.Style := bsSolid;
          Buffer.Canvas.CopyRect( Rect(0022256), EQBitmap.Canvas, Rect(00222 056 + 0));//--- Hier Kommt die Fehler Meldung Operator oder simikolon Fehlt 

          

          Buffer.Canvas.MoveTo(0,15);
          Buffer.Canvas.Pen.Color := ColorPal[0];


          for i := 0 to 239 do begin
               LCh := LOWORD(WaveData[i * 2]);
               RCh := HIWORD(WaveData[i * 2]);
               y := (LCh + RCh) div 2;
               y := Trunc((Y/32000) * 50);

                  Buffer.Canvas.Pen.Color := PaletteBitmap.Canvas.Pixels[010];
                  Buffer.Canvas.MoveTo(i, 50);
                  VBuffer.Canvas.LineTo(i, 50 - y);
                  Buffer.Canvas.Pixels[i, 50 - y] := ColorPal[5];
                  Buffer.Canvas.LineTo(i, 50 - y);

                  Buffer.Canvas.Pen.Color := PaletteBitmap.Canvas.Pixels[010];
                  Buffer.Canvas.MoveTo(i, 50);
                  Buffer.Canvas.LineTo(i, 50 + y);
                  Buffer.Canvas.Pixels[i, 50 - y] := ColorPal[5];
                  Buffer.Canvas.LineTo(i, 50 - y);
             end;
                             VideoBuffer.Canvas.Pen.Color := clBlack;
                   Buffer.Canvas.Brush.Color := clBlack;
                   Buffer.Canvas.Brush.Style := bsSolid;
                   Buffer.Canvas.CopyRect( Rect(0022256), MainEQBitmap.Canvas, Rect(00222 + 056 + 0));
                   
                   BitBlt(HWND, 0022256, VideoBuffer.Canvas.Handle, 00, srccopy)
             end;


Was Läuft da verkehrt ?

Gruss Bernd

Moderiert von user profile iconGausi: Code- durch Delphi-Tags ersetzt


Jetstream - Di 23.05.06 10:29
Titel: Re: Canvas und TRect Problem
user profile iconbernd29 hat folgendes geschrieben:

Delphi-Quelltext
1:
Rect(00222 056 + 0)                    


Is noch Recht früh am Morgen :)

Delphi hat mit der Fehlermeldung schon ganz Recht, hinter der 220 steht nämlich einfach ne weitere Zahl, kein Komma.


bernd29 - Di 23.05.06 12:34

Hallo,

Hab ich nun Geändert die Fehler Meldung Kommtz Trotz dem noch :cry:

gruss


Arno Nym - Di 23.05.06 13:02

Hi,
Da du nich angegebn hast was denn die Fehlermeldung ist, nehm ich mal an es liegt am letzten kopieren mit Bitblt.
Falls dein "Buffer" ein graphics.TBitmap ist solltest du mal versuchen ob es einfach mit Videobuffer.Canvas.draw(0,0,Buffer) funktioniert.

MFG Arno Nym


bernd29 - Di 23.05.06 13:10

hallo

Die Fehler Meldung Tritt genau da auf : Buffer.Canvas.CopyRect( Rect(0, 0, 222, 56),

Fehler Meldung Operator oder simikolon Fehlt .

Gruss


Arno Nym - Di 23.05.06 15:25

Hi !
also folgendes:
Rect ist eine Funktion die eine Variable vom Typ TRect zurückliefert, nimm die Definition "var Rect:integer" raus, und probiers dann noch mal.
Im übrigen verstehe ich nicht warum du erst das "Buffer"-Bild mühsam zeichnist und dann mit dem Eqalizer-Bild überschreibst?

MFG, Arno Nym