Página 1 de 1

Saber o tamanho do Icone (W/H)

Enviado: 18 Dez 2017 08:20
por asimoes
Pessoal,

Tem alguma função em harbour que passando como parâmetro o icone e retorne o tamanho w e h dele ?
Que não seja pela freeimage

Saber o tamanho do Icone (W/H)

Enviado: 18 Dez 2017 08:52
por asimoes
Consegui usando a HwGui

Código: Selecionar todos

#include "hwgui.ch"
FUNCTION TamIcone
LOCAL nWidthIcon, nHeightIcon, aTamIcon
    
nhandle := hwg_Loadimage( 0, 'iPrinter24.ico', IMAGE_ICON, nWidthIcon, nHeightIcon, LR_DEFAULTSIZE + LR_LOADFROMFILE + LR_SHARED )
 
aTamIcon := hwg_Geticonsize( nhandle )

nW :=  aTamIcon[1] 
nH :=  aTamIcon[2] 
 
hwg_MsgInfo( "W  " + str(nw) + " " + "H " + Str(nh) )

RETURN aTamIcon

Saber o tamanho do Icone (W/H)

Enviado: 18 Dez 2017 10:05
por JoséQuintas
Só usar a do Windows, ou do Harbou4 3.4 que é compatível, e não precisa saber do tamanho original, melhor que isso, é selecionada atomaticamente a maior antes de redimensionar.
LoadImage function


HANDLE WINAPI LoadImage(
_In_opt_ HINSTANCE hinst,
_In_ LPCTSTR lpszName,
_In_ UINT uType,
_In_ int cxDesired,
_In_ int cyDesired,
_In_ UINT fuLoad
);
https://msdn.microsoft.com/pt-br/librar ... s.85).aspx

Infelizmente não tem no XP, só do Windows Vista pra frente....

Saber o tamanho do Icone (W/H)

Enviado: 18 Dez 2017 10:15
por asimoes
Quintas,

A hwgui usa essa função LoadImage dentro da hwg_Loadimage

Saber o tamanho do Icone (W/H)

Enviado: 18 Dez 2017 10:41
por JoséQuintas
E eu uso no wvgButton que modifiquei.

Código: Selecionar todos

::SendMessage( BM_SETIMAGE, WIN_IMAGE_ICON, wvg_LoadImage( ::oImage[ 3 ], nLoadFromDiskFile, WIN_IMAGE_ICON, nWidth, nHeight ) )
que por usa vez foi reescrito pelo Viktor assim:

Código: Selecionar todos

/* https://msdn.microsoft.com/library/ms648045
   Windows 2000 and upper, wapi_LoadImage() can resize image

   nSource: 0 ResourceIdByNumber
   nSource: 1 ResourceIdByName
   nSource: 2 ImageFromDiskFile */
FUNCTION wvg_LoadImage( ncImage, nSource, nBmpOrIcon, nWidth, nHeight )

   hb_defaultValue( @nBmpOrIcon, WIN_IMAGE_BITMAP )

   RETURN iif( hb_defaultValue( nSource, 0 ) == 2, ;
      wapi_LoadImage( , ncImage, nBmpOrIcon, nWidth, nHeight, WIN_LR_LOADFROMFILE + WIN_LR_DEFAULTSIZE ), ;
      wapi_LoadImage( wapi_GetModuleHandle(), ncImage, nBmpOrIcon, nWidth, nHeight, WIN_LR_DEFAULTSIZE ) )
Nota: somente fonte PRG