Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Was kann Paint, was ich nicht kann? ( Clipboard pasten ) (https://www.delphipraxis.net/71585-kann-paint-ich-nicht-kann-clipboard-pasten.html)

DGL-luke 31. Aug 2006 22:47

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )
 
Interessanter Ansatz... wie würd ich das aus der Zwischenablage rausholen und dann interpretieren?

Khabarakh 31. Aug 2006 23:15

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )
 
Mit der Clipboard-Klasse von .Net funktionier alles tadellos :| . Vielleicht finde ich etwas Interessantes im Reflector.

[edit]
Etwas komplex, das Ganze *g* . Der Hauptunterschied ist jedenfalls, dass die VCL GetClipboardData und die BCL OleGetClipboard nutzt.
[/edit]

DGL-luke 31. Aug 2006 23:34

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )
 
Hallo,

danke für deine Bemühungen, Khabarakh. Die Lib namens "gdiplus" gibts bei torry, hier: http://www.torry.net/quicksearchd.ph...plus&Title=Yes

Mein Code:

Delphi-Quellcode:
procedure TFMain.SBPasteClick(Sender: TObject);
var pic: TPicture;
    bitmap: TGPBitmap; //GDI-bitmap
    g: TGPGraphics; //GDI-"Canvas"
begin
  pic := TPicture.Create;

  if Clipboard.HasFormat(CF_BITMAP) then
    begin
      bitmap := TGPBitmap.Create(Clipboard.GetAsHandle(CF_BITMAP),0);
      pic.Bitmap.SetSize(bitmap.GetWidth,bitmap.GetHeight);
      g := TGPGraphics.Create(pic.Bitmap.Canvas.Handle);
      g.DrawImage(bitmap,0,0);
      bitmap.Free;
      g.free;
    end
  else
   Exit;

  if not pic.Bitmap.Empty then //schlägt bei GIMP-Auschnitt an
    LoadImage(pic);
  pic.Free;
end;
Bei meinen Versuchen schien das Bild selbst übrigens gleichgültig zu sein(habe mehrere ausprobiert, allerdings jeweils nur mit GIMP, Vergleich war ein einfacher Screenshot per Druck-Taste), entscheidend war der "Export" mit GIMP (Version 2.2.8).

Khabarakh 31. Aug 2006 23:55

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )
 
(Edit oben)

Hab mal schnell (pinvoke.net sei Dank ^^ ) TClipboard nachprogrammiert, damit kommt es auch unter dotNet zu einem GDI-Fehler. Nun, das Nachprogrammieren von System.Windows.Forms.Clipboard + DataObject + OleConverter wird wohl nicht ganz so schnell vonstatten gehen ;) .

DGL-luke 31. Aug 2006 23:59

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )
 
Du siehst also keine Möglichkeit, da irgendwas schon auf WinAPI-Ebene abzuzweigen? Dieses OLE-Dings zum Beispiel?

Mal ne andere Frage: Wie bekomm ich die Daten (ausgehend vom handle) komplett aus der zwischenablage raus, meinetwegen in einen Stream?

Dann kann ich ja mal mit diversen Hämmern, ich meinte Dateiformate, an die Sache rangehen. Wird ja wohl ne OS/2-Bitmap-Lib geben oder zumindest n RFC.

Khabarakh 1. Sep 2006 00:10

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )
 
[quote="DGL-luke"]Du siehst also keine Möglichkeit, da irgendwas schon auf WinAPI-Ebene abzuzweigen? Dieses OLE-Dings zum Beispiel?[quote]Wie gesagt, OleGetClipboard. Auch das Framework kann nicht zaubern, irgendwo muss es noch auf der WinAPI aufsetzen ;) . Aber auch mit dem IDataObject ist erst die Hälfte der Arbeit getan, die .Net-Klassen kannst du als Beispielimplementierung verwenden.

Zitat:

Mal ne andere Frage: Wie bekomm ich die Daten (ausgehend vom handle) komplett aus der zwischenablage raus, meinetwegen in einen Stream?

Dann kann ich ja mal mit diversen Hämmern, ich meinte Dateiformate, an die Sache rangehen. Wird ja wohl ne OS/2-Bitmap-Lib geben oder zumindest n RFC.
Tja, im (nicht OLE-, soweit ich das verstanden habe) Clipboard liegt leider nur ein Handle, und ein einzelner 32Bit-Wert kann nun wirklich alles sein ;) .

DGL-luke 1. Sep 2006 12:27

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )
 
Ok... werd mir das mal ansehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz