Transparencia de un bitmap en una ventana (Solucionado)

Post Reply
groiss
Posts: 206
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Transparencia de un bitmap en una ventana (Solucionado)

Post by groiss »

Creo una ventana, y en ella pongo dos bitmas de esta forma:

Code: Select all

SetSkinButtonsColors( 1, { { 0.33, nRGB( 167,  73, 169 ), nRGB( 253, 157, 165 ) }, ;
                              { 0.33, nRGB( 253, 157, 165 ), nRGB( 167,  73, 169 ) } },;
                         nRGB( 153, 43, 153 ), nRGB( 213, 102, 213 ) )

SkinButtons()
SetDlgGradient( { { 1, nRGB( 201, 217, 237 ), nRGB( 231, 242, 255 ) } } )

DEFINE BRUSH oBrush STYLE NULL
DEFINE ICON  oIcon  resname "ico"
DEFINE CURSOR ocurdedo RESNAME "curdedo"
DEFINE FONT supFont NAME "MS SANS SERIF" size 0, -10 
DEFINE WINDOW oWnd FROM 1, 5 TO 20, 65  ;
   BRUSH oBrush                      ;
   TITLE "Gestión de Camping Ver.:3.1801.23";
   ICON  oIcon                       ;
   MENU  BuildMenu()
   oWnd:ofont:=supfont
define bitmap obmp RESOURCE "prueba"

ACTIVATE WINDOW oWnd MAXIMIZED  valid(final());
  ON PAINT {gradpaint( hDC, ownd ), Drawmasked( hDC,obmp:hBitmap, ownd:nbottom-400, ownd:nright-510)} 

 
Mi pregunta es la siguiente, ¿hay alguna forma de asignar un tooltip al bitmap?, y¿ de ejecutar una acción al hacer click sobre el mismo?
El problema radica en que si defino el bitmap de la forma @x, y bitmap ... si puedo ejecutar las acciones asociadas al mismo, pero no puedo ponerlo transparente sobre la ventana, su fondo real en blanco, y si lo pongo transparente se me muestra el fondo negro, si modifico el brush de la ventana al transparentarlo pasa a verse evidentemente como el fondo de la ventana, pero no con el degradaado que le he puesto a la ventana .
Muchas gracias.
Un saludo
Last edited by groiss on Wed Jan 24, 2018 6:37 am, edited 1 time in total.
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Consulta sobre bitmap

Post by karinha »

Intenta asi:

Code: Select all

   DEFINE BITMAP oBmp RESOURCE "PRUEBA" OF oWnd ADJUST TRANSPARENT ;
       ON CLICK( ACTION_BITMAP() )

   oBmp:cToolTip := "Hay ToolTip"
 
Saludos.
João Santos - São Paulo - Brasil
groiss
Posts: 206
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Consulta sobre bitmap

Post by groiss »

karinha wrote:Intenta asi:

Code: Select all

   DEFINE BITMAP oBmp RESOURCE "PRUEBA" OF oWnd ADJUST TRANSPARENT ;
       ON CLICK( ACTION_BITMAP() )

   oBmp:cToolTip := "Hay ToolTip"
 
Saludos.
Joao muchas gracias, pero no me lo admite me da un error en el preprocesado la clausula on click no la acepta.
Un saludo
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Consulta sobre bitmap

Post by karinha »

Image

Code: Select all

#include "Fivewin.ch"

PROCEDURE MAIN()

   Local oFont, oWnd, oBar, b1, b2, b3, b4, b5
   local oBtn, cVer := FWVERSION

   SetBalloon( .T. ) // Balloon shape required for tooltips
   SkinButtons()

   DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0,-10

   DEFINE WINDOW oWnd FROM 0,0 TO 474,639 PIXEL TITLE "Test BTNBMP"

   oWnd:SetFont(oFont)

   DEFINE BUTTONBAR oBar TOP _3D SIZE 50,50 OF oWnd

   @ 100, 165 BTNBMP oBtn OF oWnd  ;
       SIZE 120, 120 ;
       PROMPT cVer + CRLF + "FiveWin" FILE "..\BITMAPS\sms.bmp" 2007 ;
       FONT oFont RIGHT ;
       ACTION MsgInfo("Hello")  ;
       TOOLTIP( "Hay tooltip beatiful" ) // funciona mui bien

   oBtn:lEllipse = .T.

   // oBtn:cToolTip := "Hay Tooltip beatiful" // funciona tambien

   DEFINE MSGBAR OF oWnd PROMPT "Testing bitmaped buttons with captions" ;
      TIME DATE NOINSET

   ACTIVATE WINDOW oWnd

RETURN NIL
 
Saludos.
João Santos - São Paulo - Brasil
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Consulta sobre bitmap

Post by nageswaragunupudi »

Mi pregunta es la siguiente, ¿hay alguna forma de asignar un tooltip al bitmap?, y¿ de ejecutar una acción al hacer click sobre el mismo?
El problema radica en que si defino el bitmap de la forma @x, y bitmap ... si puedo ejecutar las acciones asociadas al mismo, pero no puedo ponerlo transparente sobre la ventana, su fondo real en blanco, y si lo pongo transparente se me muestra el fondo negro, si modifico el brush de la ventana al transparentarlo pasa a verse evidentemente como el fondo de la ventana, pero no con el degradaado que le he puesto a la ventana .
Muchas gracias.
Please try:

Code: Select all

#include "fivewin.ch"

//----------------------------------------------------------------------------//

function Main()

   local oWnd, oBrush, oBmp

   DEFINE BRUSH oBrush GRADIENT { { 1, CLR_BLUE, CLR_WHITE } }
   DEFINE WINDOW oWnd BRUSH oBrush

   @ 60,150 BITMAP oBmp FILE "c:\fwh\bitmaps\alphabmp\calendar.bmp" ;
      SIZE 132,132 PIXEL OF oWnd ;
      NOBORDER ;
      ON CLICK MsgInfo( "Action" )
   oBmp:cToolTip  := "This is a tooltip"

   ACTIVATE WINDOW oWnd CENTERED
   RELEASE BRUSH oBrush

return nil

//----------------------------------------------------------------------------//
 
Image
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Consulta sobre bitmap

Post by nageswaragunupudi »

We can get the same effect using BTNBMP with TRANSPARENT clause.

Code: Select all

#include "fivewin.ch"

function BtnTransp()

   local oWnd, oBrush, oBtn

   DEFINE BRUSH oBrush GRADIENT { { 1, CLR_GREEN, CLR_WHITE } } HORIZONTAL
   DEFINE WINDOW oWnd BRUSH oBrush

   @ 60,150 BTNBMP oBtn FILE "c:\fwh\bitmaps\pngs\2.png" ;
      SIZE 128,128 PIXEL OF oWnd FLAT ;
      ACTION MsgInfo( "Action" ) ;
      TOOLTIP "This is a tooltip" ;
      NOBORDER TRANSPARENT

   ACTIVATE WINDOW oWnd CENTERED
   RELEASE BRUSH oBrush

return nil
 
Image
Regards

G. N. Rao.
Hyderabad, India
groiss
Posts: 206
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA

Re: Consulta sobre bitmap

Post by groiss »

Muchas gracias a ambos, al final lo resolví de esta forma:

Code: Select all

@ 50,100 bitmap ocheckout resource "MIBITMAP" size 259,259 pixel noborder of ownd on click checkout()
ocheckout:ctooltip:="Mi tooltip está aquí"
ocheckout:ltransparent:=.t.
 
Pero el error gordo que tenía era generar un fondo degradado sobre un brush nulo, lo que provocaba que la transparencia se hiciese al negro, así que en cuanto modifiqué el brush, quedándolo así:

Code: Select all

DEFINE BRUSH oBrush GRADIENT { { 1, nRGB( 201, 217, 237 ), nRGB( 231, 242, 255 ) } }
 
Todo comenzó a funcionar.
Nuevamente gracias.
Un saludo
Post Reply