Autor Beitrag
jwinkl
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 04.08.16 09:09 
Hallo,

ich suche eine Erklärung für das folgende merkwürdige Verhalten einer TImage-Komponente:

Man bestücke ein Formular mit einem TImage und zwei TButtons. Dann füge man folgenden Code hinzu:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.Bitmap.SaveToFile('dummy.bmp');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Image1.Picture.Bitmap.LoadFromFile('dummy.bmp');
end;

procedure TForm1.FormCreate (Sender: TObject);
begin
  Image1.Picture.Bitmap.LoadFromFile ('mono.bmp');
  Image1.Picture.Bitmap.PixelFormat := pf32bit;
end;


Dabei ist 'mono.bmp' irgendeine monochrome Bitmap. Die Umwandlung des Pixelformats erfolgt, um alphatransparentes Zeichnen auf der Bitmap zu ermöglichen.

Drücht man jetzt die Buttons 1 und 2 mehrmals abwechselnd, dann rutscht die Bitmap jedes Mal um eine Pixelbreite nach links. Kommentiert man die Zeile mit dem Pixelformat aus, tritt dieser Effekt nicht auf.

Warum ???

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Fr 05.08.16 11:28 
Hey,

Welche Delphi Version verwendest Du? VCL / FMX? Win Version?
Allgemein ist TBitmap eine gekapselte Windows Komponente. Was davon dann Windows ist und was Delphi, dazu muesste mann in die Quelltexte sehen.

Was passiert wenn Du vor dem speichern oder laden das Pixelformat nochmal festlegst?
Ist das speichern und laden als Bitmap unumgaeglich oder koenntest Du das auch anders loesen? Zum Beispiel via Scanline die Daten einfach RAW in eine Datei schreiben. TBitmap macht ja bei dem Pixelformat fast nix anderes.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Fr 05.08.16 13:42 
abgesehen davon ob dies unumgänglich ist oder nicht.

Offensichtlich gibts beim speichern oder laden des Filesstreams eine Veränderung des Files. Interessanterweise ist der Effekt bei farbigen Bitmaps nicht vorhanden. Wenn man sich die Bitmaps der Reihe abspeichern lässt dann verschwinden in den Files irgendwie leere Byte.


Nachvollziehbar bei mir mit XE7.

_________________
mfg. Joel
jwinkl Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 05.08.16 15:01 
Hallo,

danke für die Reaktionen. Natürlich gibts verschiedene "workarounds" zur Lösung des Problems (z. B. eine "Zwischenbitmap", bei der man dann erst das Pixelformat setzt), doch wüsste ich gerne, worauf das Phänomen zurückzuführen ist. Und warum rutscht's gerade nach links und nicht z. B. auch nach oben?