2010-02-16 50 views
7

Usando Delphi 2010 Me gustaría copiar una imagen PNG al portapapeles mientras conserva la transparencia alfa. Lamentablemente, el método TPngImage.SaveToClipboardFormat lo dibujará en un mapa de bits y se perderá la transparencia.Cómo copiaría una imagen PNG al portapapeles usando Delphi

Me gustaría que la imagen PNG se pegue en aplicaciones como Photoshop y Word con transparencia alfa.

¿Alguna idea de cómo hacer eso? ¿Cómo están haciendo otras aplicaciones para copiar la transparencia en el portapapeles?

+0

John, tenía que trabajar para usted porque tengo el mismo problema riht ahora, ¿Utiliza TPNGObject? Estoy usando D7 byt creo que es el mismo concepto –

+0

Por lo que puedo recordar, no muchas aplicaciones manejan el formato PNG en el portapapeles, pero este es un proyecto antiguo y no recuerdo las limitaciones exactas. – jonjbar

Respuesta

3

Podría ser que utilicen un formato de portapapeles alternativo, consulte http://msdn.microsoft.com/en-us/library/ms649013(VS.85).aspx para obtener una lista de los formatos de portapapeles disponibles. O podrían registrar su propio formato de portapapeles, como

RegisterClipboardFormat('PNG') 

y luego simplemente escribir los datos png en el portapapeles. Si la cadena de formato del portapapeles especificada es estándar (es decir, otras aplicaciones registran el mismo formato de portapapeles), podrá pegarla en otras aplicaciones compatibles con este formato de portapapeles.

Puede que tenga que llamar directamente a las funciones de Windows, ya que el envoltorio del portapapeles de Delphi no es muy bueno.

5

Primero copio una imagen con información de transparencia en el portapapeles en Photoshop, y luego examino lo que está realmente en el portapapeles. Cuando sepa esto, probablemente pueda averiguar cómo escribir esos datos usted mismo.

3

con Delphi XE, todo lo que hice fue:

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

Para otros lectores, 'Clipboard' se define en la unidad' ClipBrd'. – saastn

Cuestiones relacionadas