Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.097 Beiträge
 
Delphi XE2 Professional
 
#1

Bitmap aus Clipboard laden

  Alt 8. Apr 2025, 00:36
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;
Angehängte Grafiken
   
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....

Geändert von Amateurprofi ( 8. Apr 2025 um 00:47 Uhr)
  Mit Zitat antworten Zitat