[GDI+] - Рисуем программно в 1С

26.06.09

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

ActiveX-компонента для рисования в 1С.

Скачать файл

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

Наименование Бесплатно
-
.1241528369 19,58Kb
1114
1114 Скачать бесплатно
Пример работы с компонентой из 1С 7.7
.1243615943 7,00Kb
255
255 Скачать бесплатно

*** Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0, который можно скачать отсюда.

и зарегистрировать компоненту в Windows - запустить reg.bat
(для удаления информации о компоненте в Windows - запустить unreg.bat)

*** Добавление на форму 1С:

v7: Использовать 1С++ и FormEx
v8: Меню "Форма" - "Вставить ActiveX..." - Выбрать элемент "Душелов.GDI"

*** Методы:
 
  *** Основные:
  
  - НоваяКартинка(Ширина, Высота); //создает новую картинку с заданной шириной и высотой
  - Очистить(Цвет); //Очищает всю поверхность рисования и выполняет заливку поверхности указанным цветом фона.
  - СкопироватьСЭкрана(ИсточникХ, ИсточникY, НазначениеХ, НазначениеY, Размер); //Выполняет передачу данных о цвете блоками битов с экрана на поверхность рисования объекта. 
  //Размер - объект типа "Размер"
  - ЗагрузитьКартинку(Файл);
  - СохранитьКартинку(Файл, ФорматФайла); //ФорматФайла - строка (bmp, emf, exif, gif, icon, jpg, memorybmp, png, tiff)
  - ОчиститьПамять();


  *** Создание элементов:

  - СоздатьПеро(Цвет, Ширина); //создает объект типа "Перо". 
  //Цвет - объект типа "Цвет"  
  - СоздатьКисть(r, g, b); //создает объект типа "Кисть" заданного цвета
  //r, g, b - числа
  - СоздатьШрифт(Название, Размер, Стиль); //создает объект типа "Шрифт". 
  //Название - имя шрифта, размер - число, стиль - строка с описанием шрифта, разделенные "|" (bold, italic, strikeout, underline) 
  - ПолучитьЦвет(r, g, b); //создает объект типа "Цвет". 
  //r, g, b - числа
  - СоздатьТочку(х, у); //создает объект типа "Точка". 
  //х, н - координаты
  - СоздатьМассивТочек(Размер); //создает объект типа "Точки". 
  //Размер - число, размер массива
  - УстановитьТочкуВМассив(Точки, Индекс, Точка); //
  //Точки - объект типа "Точки", Индекс - число, Точка - объект типа "Точка"
  - СоздатьИконку(Файл); //создает объект типа "Иконка" из файла
  - СоздатьКартинку(Файл); //создает объект типа "Картинка" из файла
  - СоздатьПрямоугольник(х, у, Ширина, Высота); //создает объект типа "Прямоугольник". 
  - СоздатьРазмер(Ширина, Высота); //создает объект типа "Размер". 

  *** Рисование:

  - РисоватьЛинию(Перо, х1, у1, х2, у2); //Рисует линию между двух точек
  - РисоватьЛинии(Перо, Точки); //Рисует набор сегментов линии, которые соединяют массив точек
  - РисоватьДугу(Перо, Прямоугольник, НачальныйУгол, Угол); //Рисует дугу, которая является частью эллипса, заданного прямоугольником
  //НачальныйУгол - Угол (в градусах), который измеряется по часовой стрелке, начиная от оси X и заканчивая начальной точкой дуги.
  //Угол - Угол (в градусах), который измеряется по часовой стрелке, начиная от значения параметра НачальныйУгол и заканчивая конечной точкой дуги. 
  - РисоватьКривуюБезье(Перо, x1, y1, x2, y2, x3, y3, x4, y4); //Строит кривую Безье, определяемую четырьмя упорядоченными парами координат, которые представляют собой точки.
  - РисоватьКривыеБезье(Перо, Точки); //Рисует последовательность кривых Безье из массива точек
  - РисоватьСтроку(Строка, Шрифт, Кисть, х, у); //Создает указываемую текстовую строку в заданном месте
  - РисоватьМногоугольник(Перо, Точки); //Рисует многоугольник, определяемый массивом точек
  - РисоватьЗамкнутуюКривую(Перо, Точки); //Строит замкнутую фундаментальную кривую, определяемую массивом точек
  - РисоватьКривую(Перо, Точки); //Строит фундаментальную кривую через точки указанного массива точек
  - РисоватьЭллипс(Перо, Прямоугольник); //Рисует эллипс, определяемый ограничиваемым прямоугольником
  - РисоватьИконку(Иконка, х, у); //Формирует изображение, представленное указанным объектом Icon, расположенным по указанным координатам.
  - РисоватьИконкуБезРастягивания(Иконка, Прямоугольник); //Формирует изображение, представленное указанным объектом Иконка без его масштабирования.
  - РисоватьКартинку(Картинка, х, у); //Рисует заданное изображение, используя его исходный фактический размер, в месте, задаваемом парой координат.
  - РисоватьКартинкуБезМасштабирования(Картинка, Точка); //Рисует заданное изображение в заданном месте, используя его исходный фактический размер.
  - РисоватьКартинкуБезМасштабированияСОбрезанием(Картинка, Прямоугольник); //Рисует заданное изображение без масштабирования и при необходимости обрезает его, чтобы оно вмещалось в указываемом прямоугольнике.
  - РисоватьСектор(Перо, Прямоугольник, НачальныйУгол, Угол); //Рисует сектор, определяемый эллипсом, заданным структурой Rectangle и двумя радиальными линиями.
  //НачальныйУгол - Угол (в градусах), который измеряется по часовой стрелке, начиная от оси X и заканчивая первой стороной сектора.
  //Угол - Угол (в градусах), который измеряется по часовой стрелке, начиная от значения параметра НачальныйУгол и заканчивая второй стороной сектора
  - РисоватьПрямоугольник(Перо, Прямоугольник); //Рисует прямоугольник

  *** Заливка:

  - ЗаполнитьЗамкнутуюКривую(Кисть, Точки); //Заполняет внутреннюю часть замкнутой фундаментальной кривой, определяемой массивом точек
  - ЗаполнитьЭллипс(Кисть, Прямоугольник); //Заполняет внутреннюю часть эллипса, определяемого ограничивающим прямоугольником
  - ЗаполнитьСектор(Кисть, Прямоугольник, НачальныйУгол, Угол); //Заполняет внутреннюю часть сектора, определяемого эллипсом, который задан прямоугольником, и двумя радиальными линиями.
  //НачальныйУгол - Угол (в градусах), который измеряется по часовой стрелке, начиная от оси X и заканчивая первой стороной сектора.
  //Угол - Угол (в градусах), который измеряется по часовой стрелке, начиная от значения параметра НачальныйУгол и заканчивая второй стороной сектора
  - ЗаполнитьМногоугольник(Кисть, Точки); //Заполняет внутреннюю часть многоугольника, определяемого массивом точек
  - ЗаполнитьПрямоугольник(Кисть, Прямоугольник); //Заполняет внутреннюю часть прямоугольника

*** События:

  - ПриНажатииКнопкиМышки(Кнопка, X, Y);
  - ПриДвиженииМышкой(Кнопка, X, Y);
  - ПриОтжатииКнопкиМышки(Кнопка, X, Y);
  - ПриШелчкеМышкой(Кнопка, X, Y);
  - ПриДвойномШелчкеМышкой(Кнопка, X, Y);

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55428    17    23    

43

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

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

6000 руб.

16.01.2015    63823    44    59    

82

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

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

2400 руб.

29.06.2020    19708    27    6    

43

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

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

20.08.2024    21760    mrXoxot    44    

128

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

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

27.05.2024    10900    smielka    37    

105

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

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

27.12.2023    17944    1225    elcoan    53    

125

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

10.04.2023    12645    167    acces969    31    

126
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Душелов 4021 05.05.09 17:02 Сейчас в теме
Снова почитал комменты http://infostart.ru/projects/1747/?p=3#comm50
и решил написать свою компоненту...
vladimir-boy; +1 Ответить
2. vip 05.05.09 17:11 Сейчас в теме
Давно пишу такой же активикс, да все не допишу.
Василий, развивать дальше будешь?
Если нет, буду дописывать свой, если да, попробую твой. ;))
GDI+ действительно используешь или название прихватизировал просто?

Однозначно плюс.
3. Душелов 4021 05.05.09 17:13 Сейчас в теме
(2) Реально его использую. В понятии .NET я сделал обертку для пространства имен System.Drawning;

Развивать в целом - да. Есть еще ряд того, чего я не успел сегодня сделать :)
5. vip 05.05.09 17:16 Сейчас в теме
(3) Гуд.
С удовольствием потестю, и, с разрешения, попробую применить.
С хотелками и ошибками куда обращаться?
107. GSA3D 23.01.12 15:44 Сейчас в теме
(3) Пространство имен System.Drawning; это тут?
А как заставить их работать в 1С?
4. Abadonna 3969 05.05.09 17:15 Сейчас в теме
за активикс-то вроде как плюс, но вопросик мучает - а на фига?
6. vip 05.05.09 17:18 Сейчас в теме
(4) Уж ты то в курсе, зачем он мне ;))
И первому активиксу ты меня научил.
8. Abadonna 3969 05.05.09 17:22 Сейчас в теме
(6) Да я не про актив-икс. Хоть убей не могу понять ЗАЧЕМ рисовать через одно место внутри 1С
(7) Опять таки не понимаю - ЗАЧЕМ рисовать
9. Душелов 4021 05.05.09 17:26 Сейчас в теме
(8) Видно, иногда кому-то надо :) Какое-нибудь визуально представление чего-нибудь :))))
krasavcheg; +1 Ответить
11. vip 05.05.09 17:30 Сейчас в теме
(9) Скажу, зачем это мне.
Голубая мечта - конфа для производителей изделий ПВХ.
Рынок не тронут, работы хватит до конца жизни.
vitaliy.ermolenko; +1 Ответить
12. Abadonna 3969 05.05.09 17:30 Сейчас в теме
(11) Т.е ты хочешь сказать, что если я добавлю в Miracle рисование прямо но форме отчета - это будет зашибись? Там добавить - даже проще чем два байта остослать...
13. vip 05.05.09 17:32 Сейчас в теме
(12) Будет. И было уже у тебя.
Только рисование рисованию рознь.
14. vip 05.05.09 17:35 Сейчас в теме
(12) И то, что это активикс, тоже хорошо. Можно наделать примитивов на нескольких экземплярах АХ и складывать их мышей, как кубики.
28. kolyada 296 06.05.09 02:54 Сейчас в теме
(11)
Насчет голубой мечты в ПВХ:
с графикой в 1С8 прекрасно справляется VML (граф. язык встроенный в IE и заодно в соотв. объект 1С). На одной фирме (ООО "Промаокна" в Москве, если кому интересно) я так и реализовывал расчет изделий ПВХ. Всё элементарно и безо всяких доп. ухищрений типа активикс. Довольно небольшой код позволял интерактивно рисовать (визуально результат выглядел не хуже чем в специализированных ппрограммах) и обсчитывать как прямоугольные конструкции, так и арочные, треугольные и т.п. Единственно ОЧЕНЬ сильно пришлось вспоминать математику с её синусами и косинусами.
38. vip 07.05.09 09:17 Сейчас в теме
(28)(37) Насчет рисования изделий ПВХ.
На самом деле особая графическая мощь тут не нужна.
При массовом производстве 99% изделий состоят из простых элементов - рама, створки, импосты.

Я пошел таким путем.
При использовании моего активикса рисование створки, например, выглядит примерно так: ЗакуячитьСтворкуЛевуюПоворотноОткидную(Ширина,Высота). Вся математика зашита в активиксе.

На форме при помощи FormEx динамически создается нужное число контейнеров для активикса. Каждый экземпляр это ПВХ-примитив (рама, створка и т.д.). И из них собирается изделие.
Изменение размеров/положения (опять-таки при помощи FormEx) делается мышей (или вводом размера).
На экране изделие отображается с пропорциональными размерами, что важно для понимания, как будет выглядеть готовое изделие.

Таким образом, в документе я храню только вид и координаты ПВХ-примитивов.
При открытии формы документа, картинка рисуется заново.
Чем не векторная графика? ;))

Так что использовать компоненту Василия пока погожу.
Все равно большое спасибо ему, натолкнул на некоторые мысли :))
39. kolyada 296 07.05.09 14:32 Сейчас в теме
(38) в том то и дело, что считать нестандарт ПВХ (арки, трапеции и т.п.) на примитивах никак нельзя. И они точно составляют больше 1% при массовом производстве (если конечно не сидеть на заказах новостроек) - заказчик ныне пошёл привиредливый. Так что векторная графика в 1С нужна и автор пусть дальше развивает контрол.
40. vip 07.05.09 14:47 Сейчас в теме
(39) Конечно, пусть развивает.
А я буду развивать свой :))

Все больше склоняюсь к мысли, что нестандарт можно посчитать и на бумажке ;))
Не стоит овчинка выделки.
41. kolyada 296 07.05.09 15:32 Сейчас в теме
(40) ну смотря какого размера фирма и требования к персоналу расчитывающему изделия. На той фирме где я работал изделия расчитывали менеджеры (не конструктора) и результат расчета они должны были сказать сразу вне зависимости от сложности. Научить даже одного менеджера правильно расчитать нестандарт - утопия. А их на фирме было 50 человек в офисе + куча в регионах и на точках по всей Москве.
45. Душелов 4021 08.05.09 23:55 Сейчас в теме
36. vladsol 06.05.09 22:57 Сейчас в теме
Рисовать действительно бывает нужно, поэтому +.
(11)(28) Я тоже сталкивался с этой проблемой в ПВХ (производство окон), тогда я пошел через использование PHP. Программно по заданным пользователям установкам генерился скрипт, выполнялся и в 1с возвращалась картинка. Жалко у меня тогда не было этой компоненты, жизнь была бы легче.
37. maljaev 789 07.05.09 00:42 Сейчас в теме
(36) vladsol, а ты бы поиском по сайту воспользовался. У меня уж год подобная штука лежит (правда не моя), только у Душелова она выполнена в виде ActiveX-контрола, что конечно же удобно, но до функционала Gflax не дотягивает. Конечно Дужелов и не будет дотягивать контрол до gflax, он просто скорее всего сделает тот функционал которого там нету - например векторные сплайны, анимацию, градиенты. Ну а в случае с ПВХ хватило бы и Gflax, по крайней мере с PHP бы не извращался.

Душелов, даёшь мощную векторную графику!!! :)
10. vip 05.05.09 17:28 Сейчас в теме
(8) Если рисунок рисуется по данным 1С или наоборот, данные берутся из рисунка, то через то место получается как раз, когда рисуешь ВНЕ 1С.
7. Душелов 4021 05.05.09 17:20 Сейчас в теме
(4) Ну к примеру можешь комменты почитать в (1) ссылка.
Что-то рисовать, графики какие-то.
59. rboy 22.06.09 16:28 Сейчас в теме
Счас ковыряюсь с Душелов.GDI на восьмерке,

запускаю вот такой фрагмент кода в цикле

Точки = Рис.СоздатьМассивТочек(4);
Рис.УстановитьТочкуВМассив(Точки, 0, Рис.СоздатьТочку(X+40, 10));
Рис.УстановитьТочкуВМассив(Точки, 1, Рис.СоздатьТочку(X+40, 40));
Рис.УстановитьТочкуВМассив(Точки, 2, Рис.СоздатьТочку(X+30, 30));
Рис.УстановитьТочкуВМассив(Точки, 3, Рис.СоздатьТочку(X+30, 20));

Рис.ЗаполнитьМногоугольник(Кисть, Точки);
Рис.РисоватьМногоугольник(ЧерноеПеро, Точки);

тут в цикле изменяется только "X". В результате появляется ругатня на функцию "ЗаполнитьМногоугольник", типо исключительная ситуация, Parameter is not valid.

Такое впечатление что функция ЗаполнитьМногоугольник может вызываться ограниченное количество раз
15. Abadonna 3969 05.05.09 17:37 Сейчас в теме
Ну лана, рисуйте;) Мне бы ваши заботы :))))))))))
16. vip 05.05.09 17:39 Сейчас в теме
(15) И скорость отрисовки на уровне пикселей при использовании GDI+ должна быть высокой.
> Мне бы ваши заботы
Стареешь, блин ;))
17. Душелов 4021 05.05.09 22:49 Сейчас в теме
На самом деле можно добавить и визуальное рисование, да оно не надо.
Как вариант - добавить шейпы, которые предварительно описаны и двигать их мышкой.
18. GSoft 2237 05.05.09 23:49 Сейчас в теме
(17) было бы очень полезно
19. Душелов 4021 05.05.09 23:54 Сейчас в теме
(18) Ага, что-то типа MS Visio получится :))
20. GSoft 2237 06.05.09 00:01 Сейчас в теме
а одним только формексом обойтись низя?

(18) ну в каком то усеченном варианте да
21. Душелов 4021 06.05.09 00:04 Сейчас в теме
(20) На сколько я знаю, 1С++ создает объект АктивХ, а формэкс пользуется ради "ПослеОткрытия".
22. GSoft 2237 06.05.09 00:12 Сейчас в теме
Василь а можешь сделать компоненту которая просто таскает картинки по форме + пару полигонов, типа линии, прямоугольника и круга?
23. Душелов 4021 06.05.09 00:13 Сейчас в теме
24. GSoft 2237 06.05.09 00:15 Сейчас в теме
общая идея: справочник картинок, оттуда выбираем ее и таскаем по форме
а потом сохраняем все это или в файл конфигураций,или в подчиненные справочники(в зависимости от необходимой реализации)
25. Душелов 4021 06.05.09 00:17 Сейчас в теме
Сохраняем итоговую картинку? Или набор шейпов?
26. GSoft 2237 06.05.09 00:21 Сейчас в теме
лучше второй вариант, готовая картинка как довесок

чтобы при повторном открытии можно было редактировать дальше
27. MrDen 435 06.05.09 01:39 Сейчас в теме
29. venger 2124 06.05.09 12:59 Сейчас в теме
(0) Василий, (просто не успел качнуть еще, не пробовал) а для игр динамических как, пойдет? Я ж думаю когда-нибудь сделать прохождение лабиринтов с трехмерным видом изнутри ( я про это http://infostart.ru/projects/3474/ ). Просто эта http://infostart.ru/projects/1747/ мне немного не подошла, т.к. обновлять целиком надо файл, а потом его заново отображать, или я не доразобрался с ней... Как думаешь?
31. Душелов 4021 06.05.09 16:24 Сейчас в теме
(29) Возможно. Просто закрашиваешь старое цветом фона и все.
А трехмерный вид изнутри это как? :)

(30) Это уже не к этой компоненте.
33. venger 2124 06.05.09 16:54 Сейчас в теме
(31) > А трехмерный вид изнутри это как? :)

Ну типа как в 3D-бродилках (тот же Doom), только попроще, без теней и крутой графики;-) В общем, не спрашивай лучше, сам боюсь;)
34. Душелов 4021 06.05.09 16:59 Сейчас в теме
(33) Это лучше мой 3Д склад использовать :))
30. CheBurator 2695 06.05.09 13:14 Сейчас в теме
Да! и чтобы еще к графическому примитиву можно было привязывать некий "описатель" 1Совский - типа "Расшифровки" - а туда уже можно запихнуть какой-хочешь 1Совский объект - хоть СЗ, хоть ТЗ, хоть описательную строку... - вот такая у мну хотелка
32. roman 06.05.09 16:33 Сейчас в теме
БОЛЬШОЙ +. Василий, будете в Вильнюсе, милости просим в гости - с меня пиво, сам хотел писать подобное
35. Душелов 4021 06.05.09 16:59 Сейчас в теме
(32) Ну как буду в Вильнюсе - напомню ;)
42. elkpro 08.05.09 10:05 Сейчас в теме
Не могу заставить работать из под 1С 7.7.

Код такой

Перем Кисти_;

//***************************************************************
Процедура ПослеОткрытия()
Кисти_ = СоздатьОбъект("АктивИкс");
Кисти_.УстановитьАтрибут(Форма, "АктХ");
Кисти_.СоздатьЭУ("Душелов.GDI");
Кисти_.УстановитьФокус();

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

На этом этапе все нормально, но потом на форме пытаюсь сделать

Кисти_.НоваяКартинка(400,200);

выдает ошибку Поле агрегатного объекта не обнаружено (НоваяКартинка).
Почему так?
43. Ёпрст 1065 08.05.09 10:06 Сейчас в теме
(42) Кисти_.Объект.НоваяКартинка(400,200);
47. vladimir-boy 29.05.09 17:16 Сейчас в теме
Отличная разработка! Просто жесть!!! Автору большой плюс и признание!
Но к сожаленью так и не смог ничего нарисовать в семёрке, так как нет реального живого примера например элементарной обработки или отчётика, где реализован весь етот шедевр!!!
У меня к примеру(42) выдаёт ошибку: "Неудачная попытка создания объекта (АктивИкс)"
Напишите пожалуйста например обрабоку с кодом построения точки, линии на форме!
А вообще огромное человеческое спасибо!!!
48. Ёпрст 1065 29.05.09 17:22 Сейчас в теме
(47) Установите 1с++ для начала, раз ругается на объект АктивИкс...
vladimir-boy; +1 Ответить
49. vladimir-boy 29.05.09 18:34 Сейчас в теме
(48) Спасибо ЁПРСТ! Забыл ЗагрузитьВнешнююКомпоненту, но после загрузки проблема не исчезла снова новая ошибка: "Неверный идентификатор атрибута"
Ребята кто-нить может выложить пример.ert, чтоб было наглядно понятно как и что? Заранее огромное пасибо!!!
44. elkpro 08.05.09 10:27 Сейчас в теме
46. alekseineputin 26 12.05.09 15:54 Сейчас в теме
Уверен, что хорошая разработка. Плюс.
50. Душелов 4021 29.05.09 20:52 Сейчас в теме
Добавил пример работы с компонентой из 7.7
vladimir-boy; +1 Ответить
51. vladimir-boy 01.06.09 11:13 Сейчас в теме
(50)Пример - суперсила!!! Большое пребольшое спасибо!!!
52. MadRabbit 102 22.06.09 11:38 Сейчас в теме
Знатная штука! С разрешения автора попользуюсь немного. Вот если бы кто-нибуть подсказал как такое написать :)) с добавлением Drag&Drop... или может ссылочку какую-нибуть полезную кинул... то с меня пиво!
53. Душелов 4021 22.06.09 11:52 Сейчас в теме
54. MadRabbit 102 22.06.09 11:54 Сейчас в теме
(53) Надо пользователюкартинки по форме перетаскивать, а мне - отслеживать, и при масштабировании, смене ориентации страницы и т.д. учитывать. А как пока не пойму...
55. Душелов 4021 22.06.09 11:56 Сейчас в теме
(54) Данная компонента исключительно для программного рисования. Никаких юзерабилити действий.

Для "перетаскиваний" есть соседняя разработка.
56. MadRabbit 102 22.06.09 12:19 Сейчас в теме
(55) "[VectorDrawing] - Векторная графика в 1С"? Смотрел, можно было бы использовать, есть перетаскивание, можно сделать масштабирование, группировку - все замечательно, но пункт контекстного меню "О компоненте" не дает мне возможности ее использовать в своих разработках. Что, по моему, вполне естественно. По этому хотелось бы все-таки самому попробовать разобраться и написать собственную ВК. Кроме того, все-таки хочеться самому чему-нибуть научиться, а не тупо таскать с ИС чужие разработки.
Душелов; +1 Ответить
57. Душелов 4021 22.06.09 13:18 Сейчас в теме
58. MadRabbit 102 22.06.09 13:34 Сейчас в теме
(57) Сэнкс, а то я уже полез за покрывшимся пылью диском с Delphi. Хотя, как говорится, давно не брал я в руки шашку, так что или вспонинать Delphi или изучать .net - одно и тоже :))
60. rboy 22.06.09 16:32 Сейчас в теме
причем если вызываю этот цикл в процедуре "ПриОткрытии" документа, то вс нормально, если вызываю из обработчика нажатия кнопки в форме того же документа, то на определенном номере фигуры выпрыгивает ошибка.
61. Душелов 4021 22.06.09 16:41 Сейчас в теме
(60) Может передаешь несуществующие координаты?

Сделай обработку с примером, где эта ошибка показывается....
62. rboy 22.06.09 17:08 Сейчас в теме
Сейчас сделаю, куда выложить?... я недавно на этом сайте.
63. Душелов 4021 22.06.09 17:13 Сейчас в теме
64. rboy 22.06.09 17:30 Сейчас в теме
ну вот обработочка

http://narod.ru/disk/10148525000/%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D1%8F%D1%­8F%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B01.epf.html

Нажми на кнопку "выполнить" 2 раза и получишь результат.
Кроме того если попробуешь открыть эту обработку второй раз не закрывая 1С то глюк увидишь после первого нажатия на кнопку "Выполнить"

66. Душелов 4021 22.06.09 20:08 Сейчас в теме
(64) Скачивай обновление.
В своей обработке в процедуре рисования квадратиков добавь очистку памяти

Рис = ЭлементыФормы.GDI;
Рис.ОчиститьПамять();
Рис.НоваяКартинка(700, 700);

Ну и перепиши создание кистей.
65. Душелов 4021 22.06.09 20:06 Сейчас в теме
Изменено:

- СоздатьКисть(r, g, b); //создает объект типа "Кисть" заданного цвета
//r, g, b - числа

Добавлено:

- ОчиститьПамять();
67. rboy 23.06.09 12:31 Сейчас в теме
Вроде заработало после того как поменял СоздатьКисть(r, g, b); даже Рис.ОчиститьПамять(); не использовал.
68. Душелов 4021 23.06.09 12:35 Сейчас в теме
(67) Если часто будете пользоваться перерисовкой, то память стоит очищать, дабы в 1С-ке не было утечки памяти.
69. rboy 23.06.09 12:41 Сейчас в теме
Кстати функция ОчиститьПамять() не работает.

{Форма.Форма1(70)}: Ошибка при вызове метода контекста (ОчиститьПамять): Произошла исключительная ситуация (Dushelov.GDI): Method not found: 'System.GCNotificationStatus System.GC.WaitForFullGCComplete()'.
Рис.ОчиститьПамять();
по причине:
Произошла исключительная ситуация (Dushelov.GDI): Method not found: 'System.GCNotificationStatus System.GC.WaitForFullGCComplete()'.
72. rboy 23.06.09 17:22 Сейчас в теме
Не смотрел ошибку (69) ?
73. Душелов 4021 23.06.09 17:31 Сейчас в теме
(72) У меня ее нет.
Поставь себе SP1 для фреймворка, видимо этот метод был добавлен позже.
75. Душелов 4021 25.06.09 22:15 Сейчас в теме
(72) Обновил, пробуй.
Добавил еще сглаживание.
70. rboy 23.06.09 12:45 Сейчас в теме
а нельзя ли воткнуть процесс очистки памяти поместить в функцию НоваяКартинка(), а то запаришся каждому объяснять для чего она нужна.
71. Душелов 4021 23.06.09 13:06 Сейчас в теме
(70) При новой картинке она не нужна.
74. rboy 23.06.09 22:02 Сейчас в теме
Вот такой фреймворк пойдет?

http://www.microsoft.com/downloads/details.aspx?FamilyID=5b2c0358-915b-4eb5-9b1d-10e506da9d0f&DisplayLang=ru

просто у тебя в ридмишке дана ссылка на фреймворк без всяких сервиспаков, я его и ставил.
Спрашиваю прежде чем качать, потму что инет у меня не очень анлим и качать все подряд не очень охота.
76. Душелов 4021 26.06.09 11:03 Сейчас в теме
Добавлены события:

- ПриНажатииКнопкиМышки(Кнопка, X, Y);
- ПриДвиженииМышкой(Кнопка, X, Y);
- ПриОтжатииКнопкиМышки(Кнопка, X, Y);
- ПриШелчкеМышкой(Кнопка, X, Y);
- ПриДвойномШелчкеМышкой(Кнопка, X, Y);
Sudareva; +1 Ответить
77. rboy 26.06.09 14:04 Сейчас в теме
Вот про эти как раз события я и хотел намекнуть. Они как раз нужны в задаче которую я решаю. Спасибо.
78. rboy 26.06.09 14:09 Сейчас в теме
Новый косяк

Рис = ЭлементыФормы.GDI;
ЦветФона=Рис.ПолучитьЦвет(255, 251, 240);
Рис.НоваяКартинка(700, 700);
Рис.Очистить(ЦветФона);

Получаем:

{Документ.XXX.Форма.ФормаДокумента(130)}: Метод объекта не обнаружен (ПолучитьЦвет)
ЦветФона=Рис.ПолучитьЦвет(255, 251, 240);
79. rboy 26.06.09 14:16 Сейчас в теме
(78) Забираю свои слова обратно ошибки нет, просто объект ActiveX надо было удалить и вставить новый.
80. rboy 26.06.09 14:25 Сейчас в теме
События
- ПриНажатииКнопкиМышки(Кнопка, X, Y);
- ПриДвиженииМышкой(Кнопка, X, Y);
- ПриОтжатииКнопкиМышки(Кнопка, X, Y);
- ПриШелчкеМышкой(Кнопка, X, Y);
- ПриДвойномШелчкеМышкой(Кнопка, X, Y);

не работают даже в твоем примере!!!

но Рис.ОчиститьПамять(); - заработала на новой длл-ке без обновлений фреймворка
81. Душелов 4021 26.06.09 14:34 Сейчас в теме
(80) Обнови до SP1 и события будут ловиться. Да и проверь, подписаны ли эти события у компоненты (после того, как удалил/добавил) они у тебя, скорее всего пустые, не подписанные.
82. Alex_Sun 05.10.09 08:42 Сейчас в теме
А эта компонента позволяет програмно узнать текущий цвет какой либо определенной точки рисунка?
83. MAXXL 13 17.10.09 11:15 Сейчас в теме
Подскажите, как в 7.7 использовать события ПриНажатииКнопкиМышки ?
84. Душелов 4021 17.10.09 14:14 Сейчас в теме
(83)

v7: Использовать 1С++ и FormEx
85. MAXXL 13 17.10.09 17:01 Сейчас в теме
(84) Про 1С++ это понятно,я имел в виду события от этой компоненты. Или они для чего предназначены?
86. Душелов 4021 17.10.09 22:35 Сейчас в теме
Ну вот в 1С++ подписываться на эти события и их обрабатывать.
87. zk96 04.12.09 15:21 Сейчас в теме
Можно ли в катинку на форме скопировать картину из памяти? Обе картинки объекты типа Душелов.GDI.
88. asdfgcom 425 07.02.10 17:15 Сейчас в теме
Процедура КнопкаВыполнитьНажатие(Кнопка)
КрасноеПеро = Рис.СоздатьПеро(Рис.ПолучитьЦвет(255, 0, 0), 1);
Рис.РисоватьЛинию(КрасноеПеро,1, 1, 100, 100);
КонецПроцедуры


линия не выводится на форму, пока не свернешь/развернешь окно. Как устроить обновление изображения или что-то в этом роде?
89. asdfgcom 425 07.02.10 18:09 Сейчас в теме
Процедура КнопкаВыполнитьНажатие(Кнопка)
КрасноеПеро = Рис.СоздатьПеро(Рис.ПолучитьЦвет(255, 0, 0), 1);
Рис.РисоватьЛинию(КрасноеПеро,1, 1, 100, 100);
КонецПроцедуры

линия не выводится на форму, пока не свернешь/развернешь окно. Как устроить обновление изображения или что-то в этом роде?


Отвечаю сам себе:
Рис.Refresh();

Уважаемый Dushelov. Control на 5 баллов. То, что нужно, спасибо. Только хотелось бы более подробного описания функций. Трудновато до всего доходить методом тыка...
90. zk96 01.05.10 19:26 Сейчас в теме
Подскажите, как загрузить картинку из памяти, IPicture.
91. zk96 07.05.10 15:09 Сейчас в теме
92. aegoncharov 29.07.10 06:12 Сейчас в теме
А как нарисвать точку? Специальной процедуры нет, а при рисовании линии с совпадающим концом и началом не рисуется ничего.
93. quadro3 21.09.10 11:53 Сейчас в теме
Под Windows 7 не фурычит.
Видимо из-за встроенного там NET 3.5 ((
При установке не находит ngen
Есть лекарство?
94. dvv_mail 28.10.10 19:21 Сейчас в теме
Поддерживаю предыдущего оратора. Какие перспективы работы компоненты по Win7
95. Tria 14 30.12.10 15:57 Сейчас в теме
А что на счет полос прокрутки? Нарисовал большой прямоугольник, он выходит за рамки элемента, но просмотреть все нет возможности.
96. Душелов 4021 30.12.10 22:01 Сейчас в теме
(95) Основная идея - программно рисовать. Отображать можно в стандартном 1С-овском поле картинки
97. Tria 14 31.12.10 15:38 Сейчас в теме
да вот отображать надо именно в Вашей компоненте. Задача в следующем: нарисовать таблицу (большую или нет зависит от пользователя), в некоторых ячейках нарисовать цветные квадратики, некоторые ячейки соединить дугами, и дат пользователю возможность перемещать эти квадратики. А для перемещения надо отслеживать события нажатие кнопки мыши, движение курсора и отжатие кнопки. Поэтому рисовать картинку, сохранять в файл и загружать в поле картинки не подходит.
98. Tria 14 10.01.11 15:42 Сейчас в теме
Нашёл выход: на форме разместить панель, отключить свойство "использовать только видимую область", на ней разместить актив-икс и у него указать ширину и высоту большие, тогда полосы прокрутки будут у панели и много места для рисования! Спасибо за компоненту!
wanderer-miass; Душелов; +2 Ответить
Оставьте свое сообщение