Ich habe eine .bmp-Datei
Die öffne ich mit Paint.
In Paint wird das Bild korrekt angezeigt (Bild_1).
Mit Ctrl-A und Ctrl-C kopiere ich die ins Clipboard,
Dann lade ich die aus dem Clipboard (siehe unten) und speichere sie.
Die gespeicherte Datei öffne ich mit Paint.
Die Datei wird angezeigt, aber mit verfälschten Farben (Bild_2).
Ähnliches passiert, wenn ich die Originaldatei mit Paint öffne, ins Clipboard kopiere und mit Photoshop aus dem Clipboard lade (Bild_3).
2 Fragen
1) Was ist der Fehler?
2) Wie kann ich herausfinden, welche Daten (Speicherauszug) tatsächlich im Clipboard sind?
Hab gerade gemerkt, das man die Bilder nicht in vergrößerter Form anzeigen kann.
Die Farben der aus dem Clipboard geladenen Bilder scheinen Systemfarben (clActiveBorder .. clWindowText) zu sein.
Prozedur zum Laden aus dem Clipboard:
Delphi-Quellcode:
PROCEDURE TMain.Test;
FUNCTION FullPath(const Dsn:String):String;
begin
Result:=ExtractFilePath(ParamStr(0))+Dsn;
end;
var Bmp:TBitmap; Data:THandle; Palette:HPalette;
begin
if ClipBoard.HasFormat(CF_Bitmap) then begin
Bmp:=TBitmap.Create;
ClipBoard.Open;
try
Data:=GetClipboardData(CF_BITMAP);
Palette:=GetClipboardData(CF_PALETTE);
Bmp.LoadFromClipboardFormat(CF_BITMAP,Data,Palette);
finally
ClipBoard.Close;
end;
Bmp.SaveToFile(FullPath('Test.bmp'));
Bmp.Free;
end;
end;