Page 1 of 1
Bitmaps desde Recursos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
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.
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
Re: Bitmaps desde Recursos
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
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.htmlEso 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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Tue Jan 10, 2012 2:26 pm
by Adolfo
JBrita
Gracias, pruebo y te comento
Desde Chile
Adolfo