Closed lintest closed 3 years ago
ФайлРесурса = "v8res://core83/edtButtons.zip";
ВременныйФайл = ПолучитьИмяВременногоФайла();
КопироватьФайл(ФайлРесурса, ВременныйФайл);
ОтборКартинки = Новый Соответствие;
ОтборРазмеров = Новый Соответствие;
ОтборРазмеров.Вставить(14, "bldpi");
ОтборРазмеров.Вставить(16, "ldpi");
ОтборРазмеров.Вставить(20, "aldpi");
ОтборРазмеров.Вставить(24, "mdpi");
ОтборРазмеров.Вставить(28, "amdpi");
ОтборРазмеров.Вставить(32, "hdpi");
ОтборРазмеров.Вставить(48, "xdpi");
ОтборРазмеров.Вставить(64, "udpi");
ЗначениеОтбора = ОтборРазмеров.Получить(ВысотаКартинки);
ОтборКартинки.Вставить("screenDensity", ЗначениеОтбора);
Картинка = Новый Картинка(ВременныйФайл);
УдалитьФайлы(ВременныйФайл);
ДвоичныеДанныеКартинки = Картинка.ПолучитьДвоичныеДанные(Ложь, ОтборКартинки);
Ого ты провел исследование
GetScaleFactorForMonitor function (shellscalingapi.h)
Нужно вычислять масштаб для монитора
Новое свойство Масштаб и метод ПолучитьМасштаб() для определения масштаба экрана. Метод может принимать идентификатор окна в качестве параметра. Возвращает масштаб в процентах от 100 до 400.
ОписаниеОповещения = Новый ОписаниеОповещения("ПолученМасштабЭкрана", ЭтотОбъект);
ВнешняяКомпонента.НачатьВызовПолучитьМасштаб(ОписаниеОповещения, ИдентификаторОкна);
https://its.1c.ru/db/v8319doc#bookmark:dev:TI000001896
Набор картинок представляет собой архив zip-формата, который содержит картинки, описание которых приводится в файле манифеста (manifest.xml), расположенной в этом же архиве (подробнее см. здесь). Картинка может относиться к одному из вариантов разрешения экрана:
Имя каждой картинки может быть любым, а соотношение между именем картинки и разрешением указывается в манифесте. Соотношение размеров картинок в архиве можно рассчитать, базируясь на размере картинки для масштаба 100%. Так, если при масштабе 100% размер картинки равен 16 точек, то можно получить следующий набор размеров картинок для разных масштабов отображения: