Ícone multiresolução

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem 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.
xpvirtual.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem por JoséQuintas »

No tamanho máximo do monitor normal, parcial.
maxres.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ícone multiresolução

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem por JoséQuintas »

E continuo mexendo nos ícones.
Tá um carnaval bonito !!!
icones.png
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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ícone multiresolução

Mensagem por asimoes »

Icones em Dll é interessante, como vai fazer para exibir ?
Ou melhor, como vai gerar a dll com os icones e depois exibir
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ícone multiresolução

Mensagem 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
Anexos
h-DllIcon.zip
Código para gerar a Dll de resource
(257.18 KiB) Baixado 89 vezes
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem por JoséQuintas »

Deu certo direto, só com RC.

Código: Selecionar todos

hbmk2 jpa.rc -oteste -hbdynvm
resdll.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ícone multiresolução

Mensagem por asimoes »

Agora só falta saber como carregar o resource da dll
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem 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.
loadimage.png
https://msdn.microsoft.com/pt-br/librar ... s.85).aspx
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ícone multiresolução

Mensagem por JoséQuintas »

Eu dei risada agora da minha própria anotação:

Código: Selecionar todos

 // BM_SETIMAGE on button, STM_SETIMAGE em outros
tá metade em inglês e metade em português kkkk
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder