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



BeitragVerfasst: Do 04.08.16 08: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: 1035
Erhaltene Danke: 60

Win7
D6 Prof, D7 Prof
BeitragVerfasst: Fr 05.08.16 10: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.

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Dubai ist wie ein Kind. Sporadisch gesehen ist es freundlich und fröhlich. Hat man regelmäßig mit ihm zu tuen kann es einen in den Wahnsinn treiben.
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777
Erhaltene Danke: 17

Win7,10
Delphi XE7 Prof.
BeitragVerfasst: Fr 05.08.16 12: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 14: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?