Página 1 de 2
Ícone multiresolução
Enviado: 23 Fev 2018 17:22
por JoséQuintas
Até agora não entendi.
Pra XP 800 X 600, os ícones não estão bom demais?
Estou achando perfeitos demais pra baixa resolução.
XP 800 x 600 em máquina virtual W10.
Ícone multiresolução
Enviado: 23 Fev 2018 17:28
por JoséQuintas
No tamanho máximo do monitor normal, parcial.
Ícone multiresolução
Enviado: 26 Fev 2018 07:57
por JoséQuintas
O único problema talvez seja o tamanho.
O EXE quase dobrou de tamanho.
Código: Selecionar todos
18/02/2018 09:04 133.297 cmdFicha.ico
21/02/2018 14:52 134.861 icophone.ico
18/02/2018 08:58 152.238 icokey.ico
22/02/2018 20:13 161.862 multicopy.ico
17/02/2018 21:06 165.382 icomoney.ico
17/02/2018 21:05 170.736 oldicotruck.ico
21/02/2018 13:01 180.346 icosearch.ico
18/02/2018 08:52 190.952 icomailcnpj.ico
09/01/2017 21:46 198.178 jpa2017.bmp
21/02/2018 13:07 210.582 icopdf.ico
17/02/2018 21:15 251.680 icobarcode.ico
18/02/2018 08:57 287.350 icofilter.ico
17/02/2018 21:04 372.526 icotruck.ico
18/02/2018 09:06 379.926 icocoin.ico
21/02/2018 13:40 379.926 icocashregister.ico
17/02/2018 21:04 507.062 icoliqtruck.ico
17/07/2017 22:38 590.454 josequintas2017.bmp
21/02/2018 13:36 744.934 icoshopcart.ico
Ícone multiresolução
Enviado: 26 Fev 2018 08:36
por asimoes
Quintas,
Prefiro deixar os icones, jpg e bmps fora do exe, sei que tem o custo de ficar mais lento a exbição.
Ícone multiresolução
Enviado: 05 Abr 2018 11:36
por JoséQuintas
asimoes escreveu:Prefiro deixar os icones, jpg e bmps fora do exe, sei que tem o custo de ficar mais lento a exbição.
Não vou trocar, mas pensei numa quarta opção:
1 - Ícones em EXE, em resource
2 - ícones/arquivos em EXE/PRG, em resource Harbour
3 - Ícones em disco
4 - Ícones em DLL
Ícone multiresolução
Enviado: 05 Abr 2018 11:43
por JoséQuintas
E continuo mexendo nos ícones.
Tá um carnaval bonito !!!
A única coisa ruim, é que não sei como criar novos ícones com qualidade, qualque mexida estraga.
Por exemplo, o símbolo da SEFAZ.
Precisava dele normal, vermelho, escrito EMITE, CANCELA e CARTA, já deve saber porque.
E pra uso desde 16x16 até 128x128. Acho que ainda é cedo pra 256x256.
Ícone multiresolução
Enviado: 05 Abr 2018 11:43
por asimoes
Icones em Dll é interessante, como vai fazer para exibir ?
Ou melhor, como vai gerar a dll com os icones e depois exibir
Ícone multiresolução
Enviado: 05 Abr 2018 11:50
por JoséQuintas
Depende da LIB gráfica, se ela deixou o recurso disponível.
A função do Windows de carregar imagem aceita indicar de qual arquivo será carregado o resource.
E aceita indicar redimensionamento também, e aceita multi-resolução.
Ícone multiresolução
Enviado: 05 Abr 2018 11:56
por JoséQuintas
Estou insistindo nesse multi-resolução porque é muuuuuito interessante.
Num grid/browse, precisamos ícones 16x16.
Já nos buttons, é interessante 32x32.
Em 4k, já pode ser 64x64 ou maior.
Então... com o multi-resolução, fica resolvido pra qualquer situação, quanto mais qualidade no monitor/espaço disponível melhor.
É o fim de ficar procurando ícones diferentes pra resoluções diferentes.
Ícone multiresolução
Enviado: 05 Abr 2018 13:38
por asimoes
Voltando ao assunto.
Quem quiser testar.
Código para gerar a Dll de resources
Tem um exemplo na minigui, aproveitei de lá para gerar a dll
Na minigui fica na pasta \MiniGUI\SAMPLES\Advanced\Resources_DLL
Ícone multiresolução
Enviado: 05 Abr 2018 15:33
por JoséQuintas
Deu certo direto, só com RC.
Ícone multiresolução
Enviado: 05 Abr 2018 16:00
por asimoes
Agora só falta saber como carregar o resource da dll
Ícone multiresolução
Enviado: 05 Abr 2018 17:06
por JoséQuintas
Pelo menos a WVG usa essa padrão do Windows.
E no Harbour 3.4 está com os parâmetros que definem um tamanho de destino, pra redimensionar a imagem.
Foi isso que usei no meu button pra redimensionar.
Como dá pra ver, o recurso no Windows existe, vai depender da LIB usar ou não esses recursos.
https://msdn.microsoft.com/pt-br/librar ... s.85).aspx
Ícone multiresolução
Enviado: 06 Abr 2018 19:30
por JoséQuintas
A título de curiosidade, o que acabei de usar pra ícones, sem ser o pushbutton.
Código: Selecionar todos
METHOD wvgtstControl:SetImage( lResize )
LOCAL aWindowRect := {}, nWidth, nHeight
hb_Default( @lResize, .F. )
IF ::cImage != NIL .AND. ( ::nIconBitmap == WIN_IMAGE_ICON .OR. ::nIconBitmap == WIN_IMAGE_BITMAP )
IF lResize
wapi_GetWindowRect( ::hWnd, @aWindowRect )
nWidth := Int( ( aWindowRect[ 3 ] - aWindowRect[ 1 ] ) )
nHeight := Int( ( aWindowRect[ 4 ] - aWindowRect[ 2 ] ) )
ENDIF
// BM_SETIMAGE on button, STM_SETIMAGE em outros
::SendMessage( STM_SETIMAGE, ::nIconBitmap, wvg_LoadImage( ::cImage, 1, ::nIconBitmap, nWidth, nHeight ) )
ENDIF
RETURN NIL
E a wvg_LoadImage() que no Harbour 3.4 passou a ser apenas uma chamada à API.
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 ) )
Dependendo de como a LIB trata a imagem, poderia ser usada diretamente a API do Windows.
Como dá pra ver nessas rotinas, a WVG não faz nada, apenas usa as rotinas do Windows.
E isso que gosto na WVG: é API Windows em fonte PRG. Não é recurso da WVG, é apenas API Windows disponível pra uso, sem ter que entender de linguagem C.
Ícone multiresolução
Enviado: 06 Abr 2018 19:32
por JoséQuintas
Eu dei risada agora da minha própria anotação:
tá metade em inglês e metade em português kkkk