Auf Form Canvas kein Zeichnen mit qt5 möglich.

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Auf Form Canvas kein Zeichnen mit qt5 möglich.

Beitrag von Mathias »

Wen ich dies in qt5 probiere, bleibt das Form leer.
Mit gtk2 und winapi mit wine, geht es ohne Probleme.

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  x, y: integer;
begin
  for x := 0 to 199 do begin
    for y := 0 to 199 do begin
      Canvas.Pixels[x, y] := Random($FFFFFF);
    end;
  end;
  Canvas.Line(0, 0, 300, 300);
end;
Ist das Problem schon länger bekannt, oder ist dies ein Bug von qt5 ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10856
Registriert: Mo 11. Sep 2006, 19:01

Re: Auf Form Canvas kein Zeichnen mit qt5 möglich.

Beitrag von theo »

Gezeichnet wird in OnPaint, alles andere ist undokumentiertes Verhalten.
Das war schon immer so. Ich glaube auf Mac sieht man da auch nichts.

Soner
Beiträge: 724
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Auf Form Canvas kein Zeichnen mit qt5 möglich.

Beitrag von Soner »

Sowie Theo es geschrieben hat, war es immer so, bei Windows und wie ich gelesen habe bei Macos auch. Wenn man etwas neu zeichnen lassen möchte, dann muss man invalidate aufrufen und die Zeichenfunktionen in OnPaint verlagern. Oder man zeichnet in ein Bitmap und ruft anschließend invalidate und zeichnet in OnPaint diese Bitmap auf Canvas.

Antworten