Bitmaps desde Recursos

Bitmaps desde Recursos

Postby Adolfo » Thu Jan 05, 2012 9:40 pm

Holas a todos..

Tengo un BMP de 50 * 250
Lo incorpore a mi RC, en las propiedades, tambien tiene 50 * 250
Cree un Bitmap dentro de un dialogo, sus medidas tambien son de 50 * 250

Pero al mostrarlo en el dialogo ocupa el cuarto del tamaño asignado. ¿ PORQUE ?

Si le pongo la clausula ADJUST me llena el tamaño completo, pero se distorsiona...

Algun consejo... tip o algo por el estilo.

Ocupo Pelles C como editor y compilador de RC

Gracias de Antemano

Desde Chile
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Bitmaps desde Recursos

Postby cuatecatl82 » Fri Jan 06, 2012 3:51 am

Adolfo:

Tube un problema similar en mi anterior proyecto y encontre una clase que es modificación de la TImage: se llama tZoomImage, te dejo el fuente y el CH para que lo pruebes... Por cierto que es de la autoría de Jaime Irurzun.

zImage.Prg
Code: Select all  Expand view

**
* PROYECTO ...: Clase tZoomImage
* COPYRIGHT ..: (c) Jaime Irurzun
**

#include "Fivewin.ch"

CLASS TZoomImage FROM TImage

    CLASSDATA lRegistered AS LOGICAL

    METHOD PAINT()

ENDCLASS

/*_____________________________________________________________________________*/

METHOD PAINT() CLASS TZoomImage

    // jaime 17.10.04
    LOCAL nWBmp   := nBmpWidth( ::hBitmap )
    LOCAL nHBmp   := nBmpHeight( ::hBitmap )
    LOCAL aRect   := GetClientRect( ::hWnd )
    LOCAL nWidth  := aRect[4] - aRect[2]
    LOCAL nHeight := aRect[3] - aRect[1]
    // fin jaime

   IF EMPTY( ::hBitmap ) .and. ! EMPTY( ::cBmpFile )
      ::LoadBmp( ::cBmpFile )
   ENDIF

   IF EMPTY( ::hBitmap )
      IF ::bPainted != nil
         EVAL( ::bPainted, ::hDC )
      ENDIF
      RETURN nil
   ENDIF

    // jaime 17.10.04
   IF ::lStretch
       PALBMPDraw( ::hDC, ::nX, ::nY, ::hBitmap, ::hPalette,;
                   nWidth, nHeight,, ::lTransparent, ::nClrPane ) // (nClrPane) Added by RRR 23/04/01 07:58
   ELSE
       IF ::nZoom > 0
        IF nHBmp > nHeight .OR. nWBmp > nWidth
             // si es más alta que ancha (o son iguales)
            IF nHBmp >= nWBmp
                nWBmp := ( nWBmp * nHeight ) / nHBmp
                nHBmp := nHeight
                // si el lado contrario ha quedado más grande, reajusto
                IF nWBmp > nWidth
                    nHBmp := ( nHBmp * nWidth ) / nWBmp
                    nWBmp := nWidth
                ENDIF
                PALBMPDraw( ::hDC, ::nX, ::nY, ::hBitmap, ::hPalette,;
                            nWBmp, nHBmp,, ::lTransparent, ::nClrPane )        // (nClrPane) Added by RRR 23/04/01 07:58
             // si es más ancha que alta
            ELSE
                nHBmp := ( nHBmp * nWidth ) / nWBmp
                nWBmp := nWidth
                // si el lado contrario ha quedado más grande, reajusto
                IF nHBmp > nHeight
                    nWBmp := ( nWBmp * nHeight ) / nHBmp
                    nHBmp := nHeight
                ENDIF
                PALBMPDraw( ::hDC, ::nX, ::nY, ::hBitmap, ::hPalette,;
                             nWBmp, nHBmp,, ::lTransparent, ::nClrPane )        // (nClrPane) Added by RRR 23/04/01 07:58
            ENDIF
         ELSE
            PALBMPDraw( ::hDC, ::nX, ::nY, ::hBitmap, ::hPalette,;
                        nWBmp, nHBmp,, ::lTransparent, ::nClrPane )        // (nClrPane) Added by RRR 23/04/01 07:58
         ENDIF
       ENDIF
   ENDIF
    // fin jaime

   IF ::bPainted != nil
      EVAL( ::bPainted, ::hDC )
   ENDIF

RETURN nil
 


y el archivo de Cabecera ZIMAGE.CH

Code: Select all  Expand view
/*----------------------------------------------------------------------------//
!short: ZoomImage */


#xcommand REDEFINE ZoomImage [ <oBmp> ] ;
             [ ID <nId> ] ;
             [ <of: OF, WINDOW, DIALOG> <oWnd> ] ;
             [ <resource: NAME, RESNAME, RESOURCE> <cResName> ] ;
             [ <file: FILE, FILENAME, DISK> <cBmpFile> ] ;
             [ <lClick: ON ClICK, ON LEFT CLICK> <uLClick> ] ;
             [ <rClick: ON RIGHT CLICK> <uRClick> ] ;
             [ <scroll: SCROLL> ] ;
             [ <adjust: ADJUST> ] ;
             [ CURSOR <oCursor> ] ;
             [ MESSAGE <cMsg>   ] ;
             [ <update: UPDATE> ] ;
             [ WHEN <uWhen> ] ;
             [ VALID <uValid> ] ;
       => ;
          [ <oBmp> := ] TZoomImage():ReDefine( <nId>, <cResName>, <cBmpFile>,;
             <oWnd>, [\{ |nRow,nCol,nKeyFlags| <uLClick> \}],;
                     [\{ |nRow,nCol,nKeyFlags| <uRClick> \}],;
             <.scroll.>, <.adjust.>, <oCursor>, <cMsg>, <.update.>,;
             <{uWhen}>, <{uValid}> )
 


dentro de tu prg inclulles la definición a ZImage

Code: Select all  Expand view

#Include "FIVEWIN.CH"
#Include "ZIMAGE.CH"
...
...
Local oBmp
REDEFINE ZOOMIMAGE oBmp      ID 120 OF oDlg FILENAME ".\LLAVE.BMP"  //Resource "LLAVE"
 


Y dentro del Pelles C creas un nuevo control personalizado llamado "TZoomImage" con estilo de Ventana "0x50000000" y estilo de Ventana Extendido "0x00000000" y listo, no se si haya sido de tu ayuda, pero espero te funcione...

Saludos. :mrgreen: :mrgreen:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Bitmaps desde Recursos

Postby Adolfo » Fri Jan 06, 2012 11:23 am

Gracias Cuatecatl82

Pruebo y te comento...

Pero igual tengo la duda... porque la tbitmap no es capaz de mostrarlo como se debe, el tamaño de la imagen es identica a la del recurso, deberia cuadrar sin problemas...o no ?
Antonio.. algo tengo mal ?


Saludos y comento mis experiecias.

Desde Chile
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Bitmaps desde Recursos

Postby Adolfo » Sun Jan 08, 2012 5:16 pm

Cuatecatl82...

Pues no me resulto, sigue igual, y ademas con la clausula ADJUST. el Bitmap se ve deforme.

Antonio, Daniel, hay algun metodo para convertir el tamaño real de la imagen al tamaño que posee el recurso bitmap definido en el RC.

Hasta el momento voy probando medidas para ver si se ajustan, pero es un problema.

Repito la inquietud, Si el tamaño del Recurso es igual al del bitmap ( en pixeles ) Porque no se muestra completo ?


Desde Chile
Adolfo

PD: Recien cambiado completamente a HARBOUR 3 + BCC 5.8.2 + FWH 11.5 + Pelles C
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Bitmaps desde Recursos

Postby Daniel Garcia-Gil » Sun Jan 08, 2012 8:39 pm

Hola

El tamano del recurso que ves en el pelles no esta en pixeles (son dpi), si quiers obtener le tamano en pixles tendras que modificarlo desde codigo

te dejo un ejemplo sencillo y para que compruebes lo que te comento,

Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oDlg, oBmp1

   DEFINE DIALOG oDlg RESOURCE "Test"

   REDEFINE BITMAP oBmp1 ID 110 OF oDlg RESOURCE "BMPTEST"
   
   REDEFINE BUTTON ID 111 ACTION XBrowse( GetClientRect( oBmp1:hWnd ) )

   ACTIVATE DIALOG oDlg CENTERED ON INIT oBmp1:Move( , , nBmpWidth( oBmp1:hBitmap ), nBmpHeight( oBmp1:hBitmap ) )

return nil


RC

Code: Select all  Expand view

// RESOURCE SCRIPT generated by "Pelles C for Windows, version 6.00".

#include <windows.h>
#include <commctrl.h>
#include <richedit.h>

LANGUAGE LANG_ENGLISH,SUBLANG_ENGLISH_US

TEST DIALOG DISCARDABLE 17, 36, 239, 284
STYLE WS_POPUP|DS_MODALFRAME|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "Test"
FONT 8, "MS Sans Serif"
{
  CONTROL "", 110, "TBitmap", 0x00000000, 4, 4, 200, 239
  CONTROL "Button", 111, "Button", WS_TABSTOP, 4, 244, 50, 14
}

BMPTEST BITMAP "007.bmp"

 
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Bitmaps desde Recursos

Postby Adolfo » Mon Jan 09, 2012 12:47 am

Daniel..

Gracias por tu respuesta, ahora ya me queda mas claro...

Mira Aqui
http://tiporama.com/tools/pixels_inches.html

Eso solo para empezar, asi que la cosa es un poco mas dificil, depende de la calidad del monitor, tamaño etc etc.

Asi que modifique los 3 tipos de bitmaps que usaba a tamaños "standard" para saber que tamaño usar en el RC.

Gracias, algo mas aprendi hoy.

Saludos
Desde Chile
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Bitmaps desde Recursos

Postby jbrita » Tue Jan 10, 2012 1:58 am

Adolfo prueba asi


REDEFINE IMAGE oBmp ID 200 OF odlg1 Resource "imagen UPDATE


oBmp:lTransparent:=.T.


ACTIVATE DIALOG oDlg1 Centered ON PAINT;
(DrawBitmap(oDlg1:hDC,oBmp:hBitmap,0,0,oDlg1:nWidth,oDlg1:nHeight),;
HollowText(oDlg1,5,200,"",oFont1,CLR_BLUE,2));

saludos
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm

Re: Bitmaps desde Recursos

Postby Adolfo » Tue Jan 10, 2012 2:26 pm

JBrita

Gracias, pruebo y te comento

Desde Chile
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 93 guests