Einzelnen Beitrag anzeigen

Scurra

Registriert seit: 19. Jan 2015
81 Beiträge
 
Delphi 10.3 Rio
 
#28

AW: Canvas: Änderungen/Bewegungen zeichnen

  Alt 1. Jan 2020, 09:48
Ich hoffe, ihr seid alle gut im neuen Jahr angekommen

Zitat:
Es gibt nicht nur in TBitmap32 sondern auch umzu viele Tools. Ein Veraltetes hatte ich hier zuvor mal geposted. Angus hat aber zwischenzeitlich auch etwas Neues. Mußt vllt mal ausprobieren:
http://www.angusj.com/delphi/image32/Docs/Examples.htm
https://sourceforge.net/projects/image32/
Ich versuche mich erst einmal bei dem "Standard" Graphics32

Weiß zufällig jemand, ob folgendes ein Bug in Graphics32 ist?
Wenn ich folgenden Code ausführe, erhalte ich in der Zeile "bitmap.LineToFSP" eine Exception, weil intern einmal versucht wird, durch 0 zu teilen (Image ist vom Typ TImage32):

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  bitmap: TBitmap32;
  bitmapLayer: TBitmapLayer;
  rect: TFloatRect;
begin
  Image.Width := 1670;
  Image.Height := 969;
  bitmapLayer := Image.Layers.Add(TBitmapLayer) as TBitmapLayer;
  rect.Left := 0;
  rect.Top := 0;
  rect.Right := Image.Width;
  rect.Bottom := Image.Height;
  bitmapLayer.Location := rect;
  bitmap := bitmapLayer.Bitmap;
  bitmap.Width := Image.Width;
  bitmap.Height := Image.Height;
  bitmap.MoveToF(-1, 485);
  bitmap.LineToFSP(-1091, 485);
end;
Es gibt in GR32 einen Codeblock, der untersucht, ob die Linie überhaupt sichtbar ist (so habe ich den Code zumindest verstanden). GR32 erkennt das in diesem Fall aber wohl nicht richtig. Wenn man die -1 durch eine -2 ersezt bei bitmap.MoveToF(), dann erkennt GR32, dass die Linie gar nicht im sichtbaren Bereich ist und verlässt die Methode.

Ich könnte natürlich in meinen Code schon eine Prüfung einbauen, damit LineToFSP in solchen Fällen gar nicht aufgerufen wird, aber dann müsste ich mir extra erst einmal einen Wrapper für TBitmap32 bauen.

Edit: Ich glaube, die Frage hat sich erledigt. Habe gerade in GitHub nachgeschaut und da gibt es schon eine neuere Version, die die Variable, durch die geteilt wird, vorher auf = 0 prüft.

Edit2: Hat zwar mit dem eigentlichen Thema nur indirekt zu tun, aber vllt. kann mir trotzdem jemand helfen: Ich möchte die neuste Version von Graphics32 installieren. Wenn ich das Package installieren möchte, dann erhalte ich jedoch folgende Fehlermeldung:

Zitat:
Package 'GR32_RRX3' kann nicht geladen werden. Es enthält die Unit 'GR32_XPThemes', die auch im Package 'GR32_RSXE5' enthalten ist.
Ich verstehe nicht ganz, wodurch diese Fehlermeldung ausgelöst wird?! Ich habe das Package GR32_RSXE5 nicht installiert. Warum wird das dann bemängelt?

Geändert von Scurra ( 1. Jan 2020 um 10:43 Uhr)
  Mit Zitat antworten Zitat