Formula o API per il calcolo della spaziatura delle icone del desktop su Windows XP
-
03-07-2019 - |
Domanda
Ho creato una semplice applicazione che applica linee di griglia a un'immagine o solo semplici colori da utilizzare come sfondo del desktop. L'idea è che le icone del desktop possano essere disposte all'interno della griglia. Il problema è che, a seconda di più cose di quante io capisca, la spaziatura effettiva in pixel sembra essere diversa da sistema a sistema. Ho imparato che almeno queste cose svolgono un ruolo:
- Risoluzione (duh)
- Dimensioni e posizionamento della barra delle applicazioni
- Caratteri
Deve esserci di più. Forse c'è qualche chiamata API che non conosco?
Soluzione
Esistono 1001 modi per ottenerlo / impostarlo (ma ne conosco solo 2) :-D
Registro di Windows:
HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics
i valori sono IconSpacing e IconVerticalSpacing
per codice:
utilizzando System.Management;
stringa pubblica GetWinIconSpace ()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2","SELECT * FROM Win32_Desktop");
foreach (ManagementObject wmi in searcher.Get())
{
try
{
return "Desktop Icon Spacing: " + wmi.GetPropertyValue("IconSpacing").ToString();
}
catch { }
}
return "Desktop Icon Spacing: Unknown";
}
e il terzo che non ho mai provato puoi trovarlo qui
Altri suggerimenti
Potrebbero anche essere un problema di dimensioni a causa dell'algoritmo di ridimensionamento se la dimensione richiesta dell'icona non è disponibile.
(poiché un file icona è in realtà una raccolta di icone, come spiegato in questa discussione su Icone e cursori sanno da dove provengono , dal The Old New cosa )