Формула или API для расчета расстояния между значками на рабочем столе в Windows XP
Я построил простое приложение, которое применяет линии сетки к изображению или просто простые цвета для использования в качестве обоев рабочего стола. Идея заключается в том, что значки на рабочем столе могут быть расположены в сетке. Проблема в том, что в зависимости от большего количества вещей, чем я понимаю, фактический интервал в пикселях, кажется, отличается от системы к системе. Я узнал, что по крайней мере эти вещи играют фактор:
- Разрешение (дух)
- Размер и расположение панели задач
- шрифты
Там должно быть больше, чем это. Может быть, есть какой-нибудь вызов API, о котором я не знаю?
2 ответа
Есть 1001 способ получить / установить это (но я знаю только 2):-D
Регистрация Windows:
HKEY_CURRENT_USER \ Панель управления \ Рабочий стол \WindowMetrics
значениями являются IconSpacing и IconVerticalSpacing
по коду:
using System.Management;
public string 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";
}
и третий, который я никогда не пробовал, вы можете найти здесь
Они также могут быть проблемой размера из-за алгоритма масштабирования, если запрошенный размер иконки недоступен.
(поскольку файл значков на самом деле представляет собой набор значков, как объясняется в этой теме о значках, а курсоры знают, откуда они взялись, из "Старого нового")