МФК: Многофункциональная компонента 1.3.0

23.09.24

Разработка - Работа с интерфейсом

Работа с изображениями, таймером, буфером обмена, перехватом ввода с клавиатуры и мыши в 1С!

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
МФК: Компонента x86 и x64 (zip)
.zip 183,21Kb ver:1.3.0
1
1 Скачать (1 SM) Купить за 1 850 руб.
МФК: Танковый бой! (Обычные формы)
.epf 2,32Mb ver:1.0
2
2 Скачать (3 SM) Купить за 2 450 руб.
МФК: Ввод (Обычные формы)
.epf 466,55Kb ver:1.0
1
1 Скачать (2 SM) Купить за 2 150 руб.
МФК: Изображения (Обычные формы / Управляемые формы)
.epf 223,45Kb ver:1.0
3
3 Скачать (1 SM) Купить за 1 850 руб.
МФК: Примитивы (Обычные формы / Управляемые формы)
.epf 203,72Kb ver:1.0
1
1 Скачать (1 SM) Купить за 1 850 руб.
МФК: EAN13 (Обычные формы)
.epf 202,19Kb ver:1.0
1
1 Скачать (1 SM) Купить за 1 850 руб.
МФК: Исходники
.rar 12,50Mb ver:1.3.0
1
1 Скачать (3 SM) Купить за 2 450 руб.

МФК (многофункциональная компонента) является продолжением компоненты NativeDraw. Решил переименовать, так как название не отражала сути. 

Возможности и характеристики

  1. Данная внешняя компонента сделана по технологии NativeAPI, можно подключать прямо из макета и лишних регистраций.
  2. Отрисовка происходит в памяти, результат получаем в виде двоичных данных, которые можно преобразовать в картинку и встроить куда угодно: на форму или даже на кнопку.
  3. Возможность рисования с учётом полупрозрачности.
  4. Работа с изображениями и буфером обмена.
  5. Возможность задания собственного таймера отрисовки. Будет приходить внешнее событие
  6. Работа с клавиатурой, мышкой.
  7. Доступны открытые исходники, сама отрисовка сделана через библиотеку GDI+, всё структурировано, и можно легко добавлять свои методы.
  8. Visual Studio 2022 / C++

Описание методов

[Число ФорматВыводимойКартинки]
0 - BMP
1 - PNG
2 - GIF
3 - JPG
4 - TIFF
5 - ICO

[Строка БуферОбмена]
БуферОбмена

[Строка Цвет]
Красный
Оранжевый
Жёлтый/Желтый
Зелёный/Зеленый
Синий
Фиолетовый
Серый
Белый
Чёрный

[Строка Координаты]
Последовательность из |%04X:%04X|,
где %04X - 4 знаковое HEX число. То есть:
|0001:0002||0064:0064||0100:0101| это
1. X = 1 / Y = 2
2. X = 100 / Y = 100
3. X = 256 / Y = 257


[Число Выравнивание]
0 - Лево / Верх
1 - Центр
2 - Право / Низ

[Строка Шрифт]
Arial
Tahoma
Times New Roman
и др.

[Число СтильШрифта]
0 - Нет
1 - Жирный
2 - Курсив
3 - Жирный + Курсив
4 - Подчёркнутый
8 - Зачёркнутый

[Строка ДействиеКлавиши]
НажатиеКлавиши
ПовторКлавиши
ОтпусканиеКлавиши

[Строка ДействиеМыши]
ДвижениеМыши
НажатиеЛевойКнопкиМыши
ОтпусканиеЛевойКнопкиМыши
ДвойнойКликЛевойКнопкиМыши
НажатиеПравойКнопкиМыши
ОтпусканиеПравойКнопкиМыши
ДвойнойКликПравойКнопкиМыши
НажатиеСреднейКнопкиМыши
ОтпусканиеСреднейКнопкиМыши
ДвойнойКликСреднейКнопкиМыши
НажатиеXКнопкиМыши
ОтпусканиеXКнопкиМыши
ДвойнойКликXКнопкиМыши
ДвижениеКолесаМыши

[Число РежимПерехватаВвода]
0 - Заблокировано, Нет события
1 - Заблокировано, Событие
2 - Не заблокировано, Событие


[Число СовместноНажатыеСМышьюКнопки]
1 - Левая кнопка мыши
2 - Правая кнопка мыши
4 - SHIFT
8 - CTRL
16 - Средняя кнопка мыши
32 - Кнопка мыши X1
64 - Кнопка мыши X2

//Холст (Canvas)

[Строка Холст]
Холст_Создать(Число Ширина, Число Высота, Число ФорматВыводимойКартинки);

[ДвоичныеДанные Картинка]
Холст_ДвоичныеДанные(Строка Холст);

[ДвоичныеДанные Картинка]
Холст_УчастокДвоичныеДанные(Строка Холст, Число X, Число Y, Число W, Число H);

[Булево Результат]
Холст_Удалить(Строка Холст);

//Изображение (Image)

[Строка Изображение]
Изображение_Создать(Строка Холст_Изображение_БуферОбмена_ПутьКФайлу);

[Строка Изображение]
Изображение_ИзДвоичныхДанных(ДвоичныеДанные Картинка);

[Булево Результат]
Изображение_ИзменитьРазмер(Строка Изображение, Число Ширина, Число Высота);

[Булево Результат]
Изображение_Повернуть(Строка Изображение, Число Угол, Булево ИзменятьРазрешение);

[Булево Результат]
Изображение_Отразить(Строка Изображение, Булево X, Булево Y);

[Булево Результат]
Изображение_Обрезать(Строка Изображение, Число X, Число Y, Число W, Число H);

[Булево Результат]
Изображение_ВБуферОбмена(Строка Изображение);

[Число Ширина]
Изображение_Ширина(Строка Изображение);

[Число Высота]
Изображение_Высота(Строка Изображение);

[Булево Результат]
Изображение_Размер(Строка Изображение, Число Ширина, Число Высота);

[ДвоичныеДанные Картинка]
Изображение_ДвоичныеДанные(Строка Изображение, Число ФорматВыводимойКартинки);

[ДвоичныеДанные Картинка]
Изображение_УчастокДвоичныеДанные(Строка Изображение, Число ФорматВыводимойКартинки, Число X, Число Y, Число W, Число H);

[Булево Результат]
Изображение_Удалить(Строка Изображение);

//Рисование (Draw)

[Строка Цвет]
Рисование_СоздатьЦвет(Число A, Число R, Число G, Число B);

[Строка Координаты]
Рисование_ДобавитьТочки(Строка Координаты, Число X, Число Y);

[Процедура]
Рисование_Точка(Строка Холст, Число X, Число Y, Строка Цвет);

[Процедура]
Рисование_Линия(Строка Холст, Число X1, Число Y1, Число X2, Число Y2, Число Толщина, Строка Цвет);

[Процедура]
Рисование_Эллипс(Строка Холст, Число X, Число Y, Число W, Число H, Число Толщина, Строка Цвет);

[Процедура]
Рисование_ЗаполненныйЭллипс(Строка Холст, Число X, Число Y, Число W, Число H, Строка Цвет);

[Процедура]
Рисование_Прямоугольник(Строка Холст, Число X, Число Y, Число W, Число H, Число Толщина, Строка Цвет);

[Процедура]
Рисование_ЗаполненныйПрямоугольник(Строка Холст, Число X, Число Y, Число W, Число H, Строка Цвет);

[Процедура]
Рисование_Треугольник(Строка Холст, Число X1, Число Y1, Число X2, Число Y2, Число X3, Число Y3, Число Толщина, Строка Цвет);

[Процедура]
Рисование_ЗаполненныйТреугольник(Строка Холст, Число X1, Число Y1, Число X2, Число Y2, Число X3, Число Y3, Строка Цвет);

[Процедура]
Рисование_Многоугольник(Строка Холст, Строка Координаты, Число Толщина, Строка Цвет);

[Процедура]
Рисование_ЗаполненныйМногоугольник(Строка Холст, Строка Координаты, Строка Цвет);

[Процедура]
Рисование_Текст(Строка Холст, Строка Текст, Число X, Число Y, Число W, Число H, Число ВертикальноеВыравнивание, Число ГоризонтальноеВыравнивание, Строка Шрифт, Число РазмерШрифта, Число СтильШрифта, Строка Цвет);

[Процедура]
Рисование_Изображение(Строка Холст, Строка Изображение, Число X, Число Y, Число W, Число H, Число Угол, Булево Отразить_X, Булево Отразить_Y);

//Таймер (Timer)

[Строка Таймер]
Таймер_Запустить(Число Период);

[Булево Результат]
Таймер_Остановить(Строка Таймер);

//Ввод (Input)

[Строка Ввод]
Ввод_УстановитьПерехват();

[Булево Результат]
Ввод_УбратьПерехват(Строка Ввод);

[Булево Результат]
Ввод_ЗадатьКлавишу(Строка Ввод, Число VK_KEY, Число РежимПерехватаВвода);

[Булево Результат]
Ввод_УбратьКлавишу(Строка Ввод, Число VK_KEY);

[Булево Результат]
Ввод_ЗадатьДействиеМыши(Строка Ввод, Строка ДействиеМыши, Число РежимПерехватаВвода);

[Булево Результат]
Ввод_УбратьДействиеМыши(Строка Ввод, Строка ДействиеМыши);

[Булево Результат]
Ввод_РазобратьСобытиеКлавиши(Строка ДанныеСобытия, Строка Ввод, Число КодКлавиши);

[Булево Результат]
Ввод_РазобратьСобытие(Строка ДанныеСобытия, Строка Ввод, Число X, Число Y, Число КодМыши, Число ДельтаПрокрутки);

[Булево Результат]
Ввод_РазобратьКнопкиМыши(Число КодМыши, Булево CTRL, Булево SHIFT, Булево ЛКМ, Булево СКМ, Булево ПКМ, Булево XКМ1, Булево XКМ2);

[Булево Результат]
Ввод_НажатаЛиКлавиша(Число VK_KEY);

[Булево Результат]
Ввод_ПозицияМыши(Число X, Число Y);

//Тест (Test)

[Булево Результат]
Тест_ВнешнееСобытие(Строка Источник, Строка Событие, Строка Данные);

// Внешние события

Источник => "МФК"

[Таймер]
Cобытие  =>  "СистемныйТаймер"
Данные   =>  Строка Таймер

[Клавиатура]
Cобытие  => Строка ДействиеКлавиши
Данные   => [Строка Ввод|0|0|Число КодКлавиши|0]

[Мышь]
Cобытие  => Строка ДействиеМыши
Данные   => [Строка Ввод|Число X|Число Y|Число СовместноНажатыеСМышьюКнопки|Число ДельтаПрокрутки]

Примеры

Танковый бой!

Игровой движок боя на танках в 1С!

  • Хороший структурированный код
  • Простенький ИИ 
  • Механизм столкновений
  • Эффекты
  • Минимальная версия платформы 8.3.20, обычные формы, конфигурация любая
  • Используемые возможности
    • Рисование примитивов, изображений, текста.
    • Поворот изображений
    • Работа с таймером
    • Работа с клавиатурой без перехвата

 

Ввод

Тест компоненты для работы с функциями перехвата ввода

  • Хороший структурированный код
  • Перехват клавиатуры
  • Перехват мыши
  • Реализация метода для выделения курсором мыши, пока костыльный вариант
  • Обычные формы

 

Изображения

Тест компоненты для работы с функциями обработки изображений

  • Хороший структурированный код
  • Обычные формы
  • Управляемые формы

 

 

Примитивы

Тест компоненты для работы с функциями рисования примитивов

  • Хороший структурированный код
  • Обычные формы
  • Управляемые формы

 

EAN-13

Отрисовка штрих-кода EAN13. Важно знать, сама компонента не генерирует изображение штрих-кода. Всё сделано средствами 1С, от компоненты было лишь рисование линий и текста

  • Обычные формы

 

Внимание

В файлах-примерах внешняя компонента уже вшита, но не всегда последняя.
Последнюю версию можно скачать отдельным файлом или скомпилировать исходники (они уже заранее скомпилированы).
В файлах-примерах внешняя компонента подгружается из макета. Поставляется в архиве и автоматически выбирает версию x86 и x64 в зависимости от платформы. В тонком клиенте при загрузке из макета сначала нужно компоненту установить соответствующим методом.

История версий

  • 1.0.0 - Внутренняя версия. NativeDraw переименована в МФК
  • 1.1.0 - Внутренняя версия. Переделана под многократный вызов. Раньше возможно было вызывать компоненту один раз, двойное использование могло вызывать вылет 1С. Исправлены ошибки.
  • 1.2.0 - Внутренняя версия. Вырезаны функции отлова событий окон, так как при обновлении платформы метод больше не работает. Переделаны функции перехвата ввода.
  • 1.3.0 - Публичная версия. Добавлены ещё дополнительные функции ввода.

История версий NativeDraw

  • 1.0 - Первая публичная версия
  • 1.1 - Адаптировано для новых платформ
  • 2.0 - Добавлена работа с изображениями, таймеры теперь не часть региона рисования, фиксы, переименование ф-ий
  • 2.1 - Фиксы, добавлена работа с буфером обмена (Изображения)
  • 2.2 - Добавлена ф-ия Изображение_ИзменитьРазмер(), в DLL-файле теперь прописана версия
  • 2.3 - Переделана работа с хуками, добавлена поддержка мыши, добавлены некоторые функции получения окон (для вычисления координат для мыши), переименованы события
  • 2.4 - Несколько проверок в коде, тестовая функция для внешнего события
  • 2.5 - Переделан немного вывод картинки, добавлено несколько форматов выводимой картинки, добавлены 2 функции для получения двоичных данных сразу с изображений
  • 2.5.1 - Исправления
  • 2.6 - Переделана архитектура компоненты в части работы с хуками. Хуки теперь не часть ввода. Добавлены функции и события для отлова событий окон. (Пример: Ввод, Хуки, Окна)
  • 2.6.1 - Исправлены ошибки в ф-иях буфера обмена
  • 2.6.2 - Добавлена отрисовка многоугольников, перекомпиляция для работы с Windows 7
  • 2.6.7 - Исправления
  • 2.7.0 - Добавлена ф-ия загрузки изображения в компоненту из двоичных данных  Изображение_ИзДвоичныхДанных() без предварительной записи картинки в ФС

 

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 10.3, релизы 10.3.88.3
  • Управление торговлей, редакция 11, релизы 11.5.19.60

1c c++ nativedraw mfc nativeapi tank

См. также

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62998    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    18866    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10239    7    7    

10

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    16887    mrXoxot    43    

121

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    7423    smielka    37    

100

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    14825    919    elcoan    47    

117

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    11923    162    acces969    31    

124
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. VyacheslavShilov 23.09.24 13:42 Сейчас в теме
Добрый день.
А PutPixel/GetPixel из 1С через эту компоненту возможно использовать?
Для реализации, например - мигания пикселов в заданном прямоугольнике?
2. NU_User 19 23.09.24 15:15 Сейчас в теме
3. NU_User 19 23.09.24 15:20 Сейчас в теме
сам пиксель/точку рисовать можно, но вот получить из картинки/холста конкретный пиксель можно в виде картинки 1x1
Если нужно в заданном участке получать битмап, то я запишу себе на реализацию, просто не думал что такое нужно
4. boss_kuz 106 14.10.24 19:46 Сейчас в теме
Добрый день.
Не понятно как работать с AddIn.Ввод.МФК на управляемых формах. Можете привести примеры ?
5. NU_User 19 16.10.24 00:46 Сейчас в теме
(4) Да точно так же как и на обычных, позже сделаю вариант примера на управляемых формах

Единственное, отличается подключение и работать надо на клиенте



&НаКлиенте
Перем	МФК;	


&НаСервере
Функция			МФК_ПолучитьКомпоненту()
	
	Модуль		=	РеквизитФормыВЗначение("Объект");
	//Возврат "D:\1C_Data\Компоненты\MFC\dll\mfc_debug_win64.dll";
	Возврат		ПоместитьВоВременноеХранилище(Модуль.ПолучитьМакет("mfc_1_3_0"));
		
КонецФункции

&НаКлиенте
Функция			МФК_Инициализация()
	
	АдресМФК		=	МФК_ПолучитьКомпоненту();
	ИдРасширения	=	"Ввод";
	ИдКомпоненты	=	СтрШаблон("AddIn.%1.МФК", ИдРасширения);	
	
	Если ПодключитьВнешнююКомпоненту(АдресМФК, ИдРасширения, ТипВнешнейКомпоненты.Native) Тогда
		МФК = Новый(ИдКомпоненты); 
	Иначе
		УстановитьВнешнююКомпоненту(АдресМФК);	
		
		Если ПодключитьВнешнююКомпоненту(АдресМФК, ИдРасширения, ТипВнешнейКомпоненты.Native) Тогда
			МФК = Новый(ИдКомпоненты); 
		Иначе
			УстановитьВнешнююКомпоненту(АдресМФК);	
		КонецЕсли; 
			
	КонецЕсли; 
	
	Если МФК = Неопределено Тогда
		Возврат  ЛОЖЬ;	
	КонецЕсли; 
	
	Возврат ИСТИНА;
	
КонецФункции // МФК_Инициализация()

&НаКлиенте
Процедура		ПриОткрытии(Отказ)
	
	МФК_Инициализация();
		
КонецПроцедуры


Показать


И ещё хочу добавить, что пространство имён общее и нет отдельного Addin.Ввод или Addin.Рисование. Это просто любое название при инициализации, главное чтобы было "AddIn.%1.МФК"
VyacheslavShilov; +1 Ответить
Оставьте свое сообщение