Формула или 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";

}

и третий, который я никогда не пробовал, вы можете найти здесь

Они также могут быть проблемой размера из-за алгоритма масштабирования, если запрошенный размер иконки недоступен.
(поскольку файл значков на самом деле представляет собой набор значков, как объясняется в этой теме о значках, а курсоры знают, откуда они взялись, из "Старого нового")

Другие вопросы по тегам