FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Bitmaps desde Recursos
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Bitmaps desde Recursos
Posted: Thu Jan 05, 2012 09: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, 2 * 1 TB NVME M.2, GTX 1650
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: Bitmaps desde Recursos
Posted: Fri Jan 06, 2012 03: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 (fw): Select all Collapse
**
* 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 (fw): Select all Collapse
/*----------------------------------------------------------------------------//
!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 (fw): Select all Collapse
#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. :-) :-)
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
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Bitmaps desde Recursos
Posted: 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, 2 * 1 TB NVME M.2, GTX 1650
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Bitmaps desde Recursos
Posted: Sun Jan 08, 2012 05: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, 2 * 1 TB NVME M.2, GTX 1650
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Bitmaps desde Recursos
Posted: Sun Jan 08, 2012 08: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 (fw): Select all Collapse
#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 (fw): Select all Collapse
// 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"
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Bitmaps desde Recursos
Posted: 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, 2 * 1 TB NVME M.2, GTX 1650
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: Bitmaps desde Recursos
Posted: Tue Jan 10, 2012 01: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

Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Bitmaps desde Recursos
Posted: Tue Jan 10, 2012 02: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, 2 * 1 TB NVME M.2, GTX 1650

Continue the discussion