Forum: Lazarus (IDE)
by Captain Albern,
20. Feb 2019
Ich möchte nicht wieder voreilig sein, aber ich glaube, es funktioniert jetzt.
In Graphics.pp habe ich folgenden Hinweis gefunden:
property ScanLine: Pointer read GetScanLine; platform; // Use only when wrpped by a begin/endupdate
Und wenn ich jetzt das Kopieren in die Scanlines tatsächlich innerhalb von TBitmap.BeginUpdate und TBitmap.EndUpdate ausführe, wird das Bild aktualisiert...
Forum: Lazarus (IDE)
by Captain Albern,
18. Feb 2019
Entschuldigung, ich hoffe es nervt nicht zu sehr, aber die ganzen bisherigen Bemühungen haben nichts gebracht.
Kann bitte jemand einmal ein Code-Beispiel posten, wie mit Lazarus Rasterdaten in irgendeiner Form auf den Bildschirm gezeichnet werden. Und vor allem, wenn sie sich ändern auch aktualisiert dargestellt werden. Nach Möglichkeit ohne irgendwelche zusätzlichen Packages zu installieren....
Forum: Lazarus (IDE)
by Captain Albern,
18. Feb 2019
Zwischendurch habe ich gedacht, es würde funktionieren, wenn ich ein TBitmap ohne TImage erzeuge, und dieses mit Form.Canvas.Draw direkt auf das Form zeichne. Aber auch das funktioniert nur einmal und aktualisiert dann nicht mehr.
Also habe ich weiter verfolgt, was beim Draw Passiert. Jede Menge administratives Zeug und letztendlich der Aufruf von Windows.BitBlt. Also habe ich das versucht und...
Forum: Lazarus (IDE)
by Captain Albern,
18. Feb 2019
Ich bin's nochmal.
der letzte Code, den ich gepostet habe funktioniert zwar, ist aber nicht nur eine grauenhafte Umgehungslösung, sondern auch noch sehr langsam. Beim Ändern der Größe wird Speicher neu allokiert und das dauert.
Ich habe gemessen: Für ein Bild mit knapp 2MPixeln dauert das Kopieren der Daten 0,8ms, das Refreshen inkl. Größenänderung dauert >280ms. Das kann keine Lösung sein....
Forum: Lazarus (IDE)
by Captain Albern,
17. Feb 2019
PS: Folgender Code funktioniert (eine neue Zeile). Sieht dämlich aus, ist aber so.
procedure TForm1.Button1Click(Sender: TObject);
var y,x : Integer;
Line : Array of Byte;
begin
Image1.Width:=320;
Image1.Height:=240;
Image1.Picture.Bitmap.Width:=319;//Neu eingefügt, eigentlich nutzlos
Forum: Lazarus (IDE)
by Captain Albern,
17. Feb 2019
Vielen Dank für die Mühe, aber beides funktioniert nicht.
Randomize ist nicht das Problem. Es funktioniert auch mit anderen Daten, die sich eindeutig ändern nicht.
Ich habe es mit Refresh, Repaint und Invalidate versucht, sowohl vom Image als auch vom Form. Das Bitmap wird nur einmalig aktualisiert.
Ich habe nochmal einen Counter eingefügt und das Bild bei jedem Mal drücken um einen...
Forum: Lazarus (IDE)
by Captain Albern,
16. Feb 2019
Ergänzung. Ich habe ein neues Test-Projekt mit einem TImage und einem Button angelegt und führe folgenden Code aus. Es wird ein buntes Rauschen erzeugt, wenn man auf den Knopf drückt. Allerdings nur beim ersten Mal, danach wird das Bild nicht aktualisiert.
procedure TForm1.Button1Click(Sender: TObject);
var y,x : Integer;
Line : Array of...
Forum: Lazarus (IDE)
by Captain Albern,
16. Feb 2019
Guten Morgen,
ich verwende ein TImage um Bilddaten anzuzeigen, die ich in TImage.Picture.Bitmap.ScanLine kopiere. Wenn das Kopieren fertig ist, führe ich TImage.Refresh aus, damit es angezeigt wird.
Das hat mit Delphi immer funktioniert. Mit Lazarus werden die Bilddaten erst dann aktualisiert angezeigt, wenn der Benutzer das Fenster und damit das TImage in seiner Größe ändert. Auch Repaint...