Опубликовано: 18.01.2021

Работа с картинками

При формировании пользовательского интерфейса прикладной задачи иногда требуется отображать в диалоговых формах и печатных документах графические файлы. Для этого в системе «1С:Предприятие» версии 7.7 используется специальный агрегатный тип данных "Картинка" и одноимённый элемент формы диалога и таблицы.

Элемент формы 'Картинка'

Если в форму диалога или в таблицу при помощи визуальных средств Конфигуратора вставлены элементы формы типа «Картинка», система автоматически создаёт объекты этого типа, причем идентификаторы этих элементов доступны в контексте программного модуля этой формы как уже существующие объекты типа "Картинка".

Процедура ВводНового()   // предопределенная процедура

   // При открытии формы для ввода нового сотрудника
   // загружаем рисунок с надписью "Фото отсутствует"
   ФотоСотрудника.Загрузить(КаталогИБ() + "pictures\no_foto.bmp");
   . . .

КонецПроцедуры

В результате работы вышеприведённого кода в форме будет отображена картинка с надписью «Фото отсутствует».

Вставка картинки в форму

В программных модулях допускается также создавать произвольное число объектов типа "Картинка" при помощи системной функции СоздатьОбъект(). В качестве названия агрегатного типа данных обязательно должно выступать ключевое слово «Картинка» (англоязычный синоним — «Picture»):

Логотип = СоздатьОбъект("Картинка");

В англоязычном варианте:

Logo = CreateObject("Picture");

Методы объекта типа «Картинка»

Загрузить картинку из файла или из библиотеки картинок конфигурации в элементы формы типа «Картинка» позволяет метод Загрузить(). В качестве единственного параметра методу передаётся строковое выражение, содержащее имя графического файла (с указанием пути к нему) или идентификатор картинки из библиотеки картинок конфигурации. Англоязычный синоним имени метода — Load().

Пример использования метода:

Процедура ЗагрузитьФотоСотрудника()

   ИмяФайла = "";
   ИмяКаталога = "C:";

   Если ФС.ВыбратьФайлКартинки(0, ИмяФайла, ИмяКаталога, "Выберите файл", "bmp", ) = 1 Тогда
      ФотоСотрудника.Загрузить(ИмяКаталога + "\" + ИмяФайла);
      . . .
   КонецЕсли;

КонецПроцедуры

Примечание: Загружаемый методом графический файл может иметь формат WMF, EMF, ICO, BMP, DIB или RLE.

Выгрузить картинку из элемента формы типа «Картинка» в файл позволяет метод Сохранить(). В качестве единственного параметра методу передаётся строковое выражение, содержащее имя создаваемого графического файла с указанием пути к нему. Картинка будет выгружена в файл в том же формате, в котором ранее была загружена. Англоязычный синоним имени метода — Save().

Пример использования метода:

ФотоСотрудника.Сохранить("A:\foto.bmp");

Установить режим отображения картинки в элементе формы типа «Картинка» позволяет метод РежимРисования(). В качестве единственного параметра методу передаётся числовое выражение, определяющее режим отображения картинки (возможные значения: 1 — растягивать; 2 — отображать по центру с оригинальным размером; 3 — отображать с сохранением пропорций). Англоязычный синоним имени метода — SetDrawMode().

Пример использования метода:

Процедура ВводНового()   // предопределенная процедура

   // При открытии формы для ввода нового сотрудника
   // загружаем рисунок с надписью "Фото отсутствует"
   ФотоСотрудника.РежимРисования(2);
   ФотоСотрудника.Загрузить(КаталогИБ() + "pictures\no_foto.bmp");
   . . .

КонецПроцедуры

Переустановить объект типа "Картинка" позволяет метод УстановитьКартинку(). В качестве единственного параметра методу передаётся выражение, имеющее значение типа "Картинка", или OLE-объект типа IPicture. Англоязычный синоним имени метода — SetPicture().

Данный метод копирует все содержимое одного объекта в другой, в отличие от оператора присваивания «=», который передаёт значение ссылки на уже существующий объект:

А = СоздатьОбъект("Картинка");
В = А;   // Переменные А и В ссылаются на один и тот же объект
А = СоздатьОбъект("Картинка");
B = СоздатьОбъект("Картинка");

А.Загрузить("с:\foto\logo.bmp");
В.УстановитьКартинку(А);   // Переменные А и В ссылаются на два разных объекта,
                           // хотя содержат одно и то же

Метод УстановитьКартинку() может быть полезен при создании различных анимационных эффектов в формах.

Пример создания анимации:

// Допустим в Форме диалога у нас есть элемент
// типа "Картинка" с идентификатором "Кино".
// Сделаем анимацию изображения в этой форме
Перем Фото[0];

// Создадим объекты и загрузим в них картинки
Для H = 1 По 5 Цикл
   Фото[H] = СоздатьОбъект("Картинка");
   Фото[H].Загрузить("с:\BMP\Foto" + Строка(H) + ".bmp");
КонецЦикла;
// Теперь запустим анимацию
Для Раз = 1 По 100 Цикл
   Для H = 1 По 5 Цикл
      Кино.УстановитьКартинку(Фото[H]);
   КонецЦикла;
КонецЦикла;

Другие статьи по схожей тематике