2010-02-16 3 views
7

Delphi 2010 verwenden Ich möchte ein PNG-Bild in die Zwischenablage kopieren und dabei die Alpha-Transparenz beibehalten. Leider wird die TPngImage.SaveToClipboardFormat-Methode es zu einer Bitmap zeichnen und die Transparenz wird verloren gehen.Wie würden Sie ein PNG-Bild mit Delphi in die Zwischenablage kopieren?

Ich möchte für das PNG-Bild in Anwendungen wie Photoshop und Word mit Alpha-Transparenz eingefügt werden.

Irgendeine Idee, wie man das macht? Wie kopieren andere Anwendungen Transparenz in die Zwischenablage?

+0

John, es für Sie arbeiten, weil ich das gleiche Problem haben riht jetzt, Verwenden Sie TPNGObject? Ich benutze D7 byt Ich denke, es ist das gleiche Konzept –

+0

Soweit ich mich erinnern kann, behandeln nicht viele Anwendungen das PNG-Format in der Zwischenablage, aber das ist ein altes Projekt, und ich kann mich nicht an die genauen Einschränkungen erinnern. – jonjbar

Antwort

3

Es könnte sein, dass sie ein alternatives Zwischenablageformat verwenden, siehe http://msdn.microsoft.com/en-us/library/ms649013(VS.85).aspx für eine Liste der verfügbaren Zwischenablageformate. Oder sie könnten ihre eigenen Zwischenablage Format registrieren wie

RegisterClipboardFormat('PNG') 

und dann einfach die png Daten in die Zwischenablage schreiben. Wenn die angegebene Zwischenablageformatzeichenfolge Standard ist (d. H. Andere Anwendungen registrieren dasselbe Zwischenablageformat), können Sie sie in andere Anwendungen einfügen, die dieses Zwischenablageformat unterstützen.

Möglicherweise müssen Sie Windows-Funktionen direkt aufrufen, da der Zwischenablage-Wrapper von Delphi nicht sehr gut ist.

5

Ich würde zuerst ein Bild mit Transparenzinformationen in Photoshop in die Zwischenablage kopieren und dann untersuchen, was sich tatsächlich in der Zwischenablage befindet. Wenn Sie das wissen, können Sie wahrscheinlich herausfinden, wie Sie diese Daten selbst schreiben.

3

Mit delphi XE, alles, was ich tat, war:

Clipboard.Assign(Image1.Picture.Graphic); 
+1

Für andere Leser ist "Clipboard" in der "ClipBrd" -Einheit definiert. – saastn