|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
Home → WINDEV 25 → Como pegar a resolução de um form que sofreu Zoom com Ctrol e rodinha do mouse |
Como pegar a resolução de um form que sofreu Zoom com Ctrol e rodinha do mouse |
Started by Boller, May, 18 2025 10:52 PM - No answer |
| |
| | | |
|
| |
Registered member 4,520 messages |
|
Posted on May, 18 2025 - 10:52 PM |
Abaixo eu explico como pegar a resolução de uma window após aplicar zoom no windev?
Então
MyWindow..width traz uma resolução fake
Se vc der um printscreen apenas da window
Vc terá o pixel dela numa imagem temp is image
E terá a resolução exata mesmo que tenha dado zoom
Entao
Quando aplicamos zoom via Ctrl + Roda do Mouse, o Windows (ou o próprio WinDev) não altera diretamente os valores das propriedades como MyWindow..Width ou MyWindow..Height. Esses valores refletem o tamanho lógico da janela, não os pixels reais renderizados, principalmente se houver DPI scaling ou zoom do sistema operacional.
A solução é capturar a imagem renderizada da window (como se fosse um printscreen da própria janela) e então extrair a resolução real da imagem capturada. Seguindo as diretivas, aqui está uma procedure que faz isso corretamente em WLanguage:
⸻
PROCEDURE GetRealWindowResolution
//##############################
// Procedure: GetRealWindowResolution // Autor: Adriano Boller / WX Soluções // Objetivo: Obter a resolução real da janela após zoom usando captura de tela
PROCEDURE GetRealWindowResolution(pWindowName is string)
//------------------------------------------ // 1. Captura a imagem da área da janela //------------------------------------------ imgCapture is Image imgCapture = dCopyWindow(pWindowName)
//------------------------------------------ // 2. Verifica se a imagem foi capturada com sucesso //------------------------------------------ IF imgCapture = Null THEN Error("Falha ao capturar a janela: " + pWindowName) RETURN END
//------------------------------------------ // 3. Recupera a resolução real da imagem capturada //------------------------------------------ nRealWidth is int = dWidth(imgCapture) nRealHeight is int = dHeight(imgCapture)
//------------------------------------------ // 4. Exibe ou retorna a resolução //------------------------------------------ Info("Resolução real da janela '" + pWindowName + "': " + nRealWidth + " x " + nRealHeight)
// Opcional: retornar como estrutura res is Structure Width is int Height is int END
res.Width = nRealWidth res.Height = nRealHeight
RESULT res
⸻
Observações importantes: • O comando dCopyWindow() captura a imagem real da janela, refletindo o tamanho visual verdadeiro (considerando zoom ou DPI do sistema). • Pode ser usada com "MyWindow" ou WinInput() para pegar dinamicamente o nome da janela atual. • Retorna uma estrutura com .Width e .Height reais da renderização em pixels.
⸻
Exemplo de uso:
resolucao is Structure = GetRealWindowResolution("WIN_TelaPrincipal") Trace("Largura real: " + resolucao.Width) Trace("Altura real: " + resolucao.Height)
Ok
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|