Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-07-2005
supermilloriver supermilloriver is offline
Miembro
 
Registrado: jul 2005
Posts: 32
Poder: 0
supermilloriver Va por buen camino
Question Problema con el transparente

buenassssssssss!

aver, tengo una imagen .bmp en el clipboard, y la cargo en un timage usando Picture.Bitmap:LoadFromClipboardFormat...
cuando seteo la propiedad transparent del TImage en true, no se pone transparente, sigue con el fondo blanco (fue una imagen hecha con el paint)
ahora.... si yo la cargo desde tiempo de diseño desde un archivo, NO desde el clipboard, y hago lo mismo, la imagen se pone transparente como debe ser...
no se que puede ser, pero desde mi ignorancia creo que es porque el ultimo parametro LoadFromClipboardFormat es el HPalette, y yo alli le envio un 0;
supongo entonces, que tendria que enviarle un numero que identifique la palenta que usa el paintbrush o la del sistema, puede ser?
siendo asi... como obtengo ese bendito numerito?

abrazos

Gabriel
Responder Con Cita
  #2  
Antiguo 27-07-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Esto parece funcionar bien:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
 begin
   Image1.Transparent := true;
   // Véase la ayuda de Delphi sobre "TransparentMode"
   Image1.Picture.Bitmap.TransparentMode := tmAuto;
   try
     Image1.Picture.Bitmap.Assign(Clipboard);
   except
     on E: EInvalidGraphic do
     begin
       ShowMessage(E.Message);
       raise;
     end;
   end;
 end;
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 27-07-2005 a las 04:01:33. Razón: (corrección del texto)
Responder Con Cita
  #3  
Antiguo 27-07-2005
Avatar de German
German German is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 133
Poder: 21
German Va por buen camino
Prueba a asignarle tú mismo el color que debe adoptar como transparente, tras asignar la imagen del clipboard.

Puedes capturar el color de una coordenada de la misma imagen ( 0,0 en el ejemplo):

Código Delphi [-]
Image1.Picture.Bitmap.TransparentColor := Image1.Picture.Bitmap.Canvas.Pixels[0,0];
Image1.Transparent := True;

O bien, asignarle directamente un color transparente:

Código Delphi [-]
Image1.Picture.Bitmap.TransparentColor := clRed;
Image1.Transparent := True;

O

Código Delphi [-]
Image1.Picture.Bitmap.TransparentColor := $00FF8484;
Image1.Transparent := True;


Salu2.
__________________
Tengo las manos llenas de dedos... Tengo los dedos llenos de teclas...
Tengo las teclas desordenadas... Tengo el desorden muy controlado...
Tengo el control en mis manos.

Última edición por German fecha: 27-07-2005 a las 12:24:04.
Responder Con Cita
  #4  
Antiguo 28-07-2005
supermilloriver supermilloriver is offline
Miembro
 
Registrado: jul 2005
Posts: 32
Poder: 0
supermilloriver Va por buen camino
obtener paleta del sistema

bien!
gracias!
ahora, respecto a mi primer consulta...
como puedo hacer para obtener la paleta del sistema o la paleta que usa el paintbrush y asi enviarla como referencia el ejecutar el metodo
LoadFromClipboardFormat(...,...,aqui debo mandar la paleta)
?


gracias
gabriel
Responder Con Cita
  #5  
Antiguo 28-07-2005
Avatar de German
German German is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 133
Poder: 21
German Va por buen camino
No entiendo tu duda... y no se la razón exacta de empeñarte en utilizar ese método, cuando dec ya te puso un método correcto:

Image1.Picture.Bitmap.Assign(Clipboard);

Aun así, si quieres utilizar el método que indicas:

Image1.Picture.Bitmap.LoadFromClipBoardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);

Salu2.
__________________
Tengo las manos llenas de dedos... Tengo los dedos llenos de teclas...
Tengo las teclas desordenadas... Tengo el desorden muy controlado...
Tengo el control en mis manos.
Responder Con Cita
  #6  
Antiguo 29-07-2005
supermilloriver supermilloriver is offline
Miembro
 
Registrado: jul 2005
Posts: 32
Poder: 0
supermilloriver Va por buen camino
Cita:
Empezado por German
No entiendo tu duda... y no se la razón exacta de empeñarte en utilizar ese método, cuando dec ya te puso un método correcto:

Image1.Picture.Bitmap.Assign(Clipboard);

Aun así, si quieres utilizar el método que indicas:

Image1.Picture.Bitmap.LoadFromClipBoardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);

Salu2.
Aver,
Primero, me gustaria saberlo porque me serviria para otros problemas, en cambio la rta q recibi esta buena pero me sirve para el mas urgente

Segundo, viste ese 0 que envias como tercer parametro en LoadFromClipboardFormat (yo estoiy usando ese metodo tambien), bueno, en l help dice q referencia a la paleta (de colores) y que va 0 si no tiene paleta (eso es lo q entendi yo)... ahora bien, supongo q el paint y/o windows debe usar una paleta de colores no?, o sea debe haber una paleta del sistema, yo quiero saber si hay alguna manera de referenciar esa paleta y enviarla como parametro en lugar del cero

saludos
gabriel
Responder Con Cita
  #7  
Antiguo 30-07-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

La verdad sea dicha, no estoy muy puesto en el tema, pero, por lo que he podido leer en la ayuda de Delphi y en la del SDK Win32, cuentas con funciones y estructuras para crear paletas de colores y por tanto enviarlas como parámetro cuando se menester.

Sin embargo, intuyo que es raro su uso y no solo por lo que se lee en la ayuda de la propiedad "Palette" del objeto "TBitmap":

Cita:
Empezado por TBitMap Palette property help
Another (although rare) use of Palette is to assign custom palettes created with CreatePalette to this property. Palette contains up to 256 colors that can be used to display the bitmap on screen.
Comienza por la ayuda de la función "CreatePalette" del SDK Win32. A partir de ahí se te ofrece información suficiente (en teoría) para crear ese tipo de objetos.

Sin en la ayuda de Delphi buscas la cadena "Palette property TBitmap" (sin las comillas) te toparás con la descripción de esa propiedad y con un ejemplo que hace uso de la función "CreatePalette", entre otras cosas.

Sin embargo, cuando en el ejemplo que da la ayuda de Delphi para el método "LoadFromClipboardFormat" de "TBitmap" se pasa un cero al parámetro "APalette" debe ser que sea suficiente para utilizar dicho método con el objeto "TBitmap".

No es que quiera seguir el camino fácil y no darle muchas vueltas al asunto, sino que, como digo al principio, si no estoy equivocado, es raro el uso de paletas de colores (al menos de las paletas de colores que representan los objetos de que hablamos) y tengo para mí que algo ligado al pasado.

En todo caso, ya digo, comenzando (recalco comenzando) por la ayuda que se te ofrece en el SDK Win32 sobre la función "CreatePalette" deberías poder crear ese tipo de objetos.

Probablemente alguien podrá aportar algo más de información que nos ilustre sobre este tipo de objetos y sus usos y, si algún día hubo de vérselas con alguno, tal vez aportar algo de código a modo de ejemplo.

Respecto a:

Cita:
Empezado por supermilloriver
(...) me gustaria saberlo porque me serviria para otros problemas (...)
Tal vez sería bien que aclararas un poco los mismos, puesto que, si es como intuyo, para lo que es el problema con el que iniciaste este Hilo, que era el uso del método "LoadFromClipboardFormat", creo no lo habrá para utilizar este según la propia ayuda de Delphi en su ejemplo hace, tal como te refiere German arriba.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:24:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi