Entwickler-Ecke

Multimedia / Grafik - Graphikausgabe im Debugmodus


OeBe - Sa 07.08.21 18:04
Titel: Graphikausgabe im Debugmodus
Möchte im Debugmodus (F7, F8 usw.) die Graphik-Ausgabe auf einen zweiten Monitor schrittweise beobachten. Geht das?
(Die Ausgabe auf den zweiten Monitor ist mir prinzipiell geläufig.)
OeBe


jaenicke - Sa 07.08.21 19:40

Die Frage ist wie die Ausgabe erfolgt. Falls du das fehlende Neuzeichnen meinst:
Einfach im Debugger bei Strg + F7 zum Auswerten eingeben: Application.ProcessMessages


OeBe - So 08.08.21 08:54

Danke für die Antwort, verstehe leider nicht.
Hier ein Beispiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure Kurve(Image: TImage; yFeld: TFeld; fak: Float;
                xOffset, yOffset: Word; Color: Integer);
var
  i, xPos1, xPos2, yPos1, yPos2: Word;
begin
  with Image.Canvas do begin
    xpos1 := xOffset;
    ypos1 := yOffset - ROUND(yFeld[AnfPix]*fak);
    xpos2 := xOffset;
    MoveTo(xpos1, ypos1);
    Pen.Color := Color;
    for i := AnfPix+1 to EndPix do begin
    Application.ProcessMessages;
      xpos2 := xpos2 + 1;
      ypos2 := yOffset - ROUND(yFeld[i]*fak);
      LineTo(xpos2, ypos2)
    end;
  end
end;

Das Zeichnen der Kurve mit LineTo möchte ich schrittweise mit F8 auf dem 2. Monitor verfolgen.
Bitte um "Nachhilfe".

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt


jaenicke - So 08.08.21 15:08

Da dort Application.ProcessMessages schon drin ist, sollte alles passen. Ich habe es gerade mit der aktuellen Community Edition getestet mit:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure Kurve(Image: TImage);
var
  i: Integer;
  Target: TCanvas;
begin
  Target := Image.Canvas;
  Target.MoveTo(00);
  for i := 0 to 100 do
  begin
    Target.LineTo(i * 5, i * 3);
    Application.ProcessMessages;
  end;
end;

procedure TForm142.Button1Click(Sender: TObject);
begin
  Kurve(Image1);
end;
Ich kann die Linie beim Debuggen normal sehen wie sie immer länger wird.


OeBe - So 08.08.21 15:40

Problem gelöst!
Danke
OeBe