Page 1 of 1

Bitmaps desde Recursos

PostPosted: Thu Jan 05, 2012 9:40 pm
by Adolfo
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

Re: Bitmaps desde Recursos

PostPosted: Fri Jan 06, 2012 3:51 am
by cuatecatl82
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:

Re: Bitmaps desde Recursos

PostPosted: Fri Jan 06, 2012 11:23 am
by Adolfo
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

Re: Bitmaps desde Recursos

PostPosted: Sun Jan 08, 2012 5:16 pm
by Adolfo
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

Re: Bitmaps desde Recursos

PostPosted: Sun Jan 08, 2012 8:39 pm
by Daniel Garcia-Gil
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"

 

Re: Bitmaps desde Recursos

PostPosted: Mon Jan 09, 2012 12:47 am
by Adolfo
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

Re: Bitmaps desde Recursos

PostPosted: Tue Jan 10, 2012 1:58 am
by jbrita
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

Re: Bitmaps desde Recursos

PostPosted: Tue Jan 10, 2012 2:26 pm
by Adolfo
JBrita

Gracias, pruebo y te comento

Desde Chile
Adolfo