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

26.06.09

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

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

Скачать файлы

Наименование Файл Версия Размер
-
.1241528369 19,58Kb
1105
.1241528369 19,58Kb 1105 Скачать бесплатно
Пример работы с компонентой из 1С 7.7
.1243615943 7,00Kb
253
.1243615943 7,00Kb 253 Скачать бесплатно

*** Для работы компоненты потребуется установленный 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 Управляемые формы Конфигурации 1cv8 Платные (руб)

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

6000 руб.

16.01.2015    61793    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

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

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

5000 руб.

14.01.2016    54399    16    21    

42

Управление дашбордами

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

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

2400 руб.

29.06.2020    16695    21    4    

35

Новогоднее оформление для 1С

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

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

27.12.2023    10735    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

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

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

2 стартмани

10.04.2023    9609    151    acces969    31    

118

Модель состояния для MVC

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

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3665    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12078    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Душелов 4013 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. Душелов 4013 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 3958 05.05.09 17:15 Сейчас в теме
за активикс-то вроде как плюс, но вопросик мучает - а на фига?
6. vip 05.05.09 17:18 Сейчас в теме
(4) Уж ты то в курсе, зачем он мне ;))
И первому активиксу ты меня научил.
8. Abadonna 3958 05.05.09 17:22 Сейчас в теме
(6) Да я не про актив-икс. Хоть убей не могу понять ЗАЧЕМ рисовать через одно место внутри 1С
(7) Опять таки не понимаю - ЗАЧЕМ рисовать
9. Душелов 4013 05.05.09 17:26 Сейчас в теме
(8) Видно, иногда кому-то надо :) Какое-нибудь визуально представление чего-нибудь :))))
krasavcheg; +1 Ответить
11. vip 05.05.09 17:30 Сейчас в теме
(9) Скажу, зачем это мне.
Голубая мечта - конфа для производителей изделий ПВХ.
Рынок не тронут, работы хватит до конца жизни.
vitaliy.ermolenko; +1 Ответить
12. Abadonna 3958 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. Душелов 4013 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. Душелов 4013 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 3958 05.05.09 17:37 Сейчас в теме
Ну лана, рисуйте;) Мне бы ваши заботы :))))))))))
16. vip 05.05.09 17:39 Сейчас в теме
(15) И скорость отрисовки на уровне пикселей при использовании GDI+ должна быть высокой.
> Мне бы ваши заботы
Стареешь, блин ;))
17. Душелов 4013 05.05.09 22:49 Сейчас в теме
На самом деле можно добавить и визуальное рисование, да оно не надо.
Как вариант - добавить шейпы, которые предварительно описаны и двигать их мышкой.
18. GSoft 2235 05.05.09 23:49 Сейчас в теме
(17) было бы очень полезно
19. Душелов 4013 05.05.09 23:54 Сейчас в теме
(18) Ага, что-то типа MS Visio получится :))
20. GSoft 2235 06.05.09 00:01 Сейчас в теме
а одним только формексом обойтись низя?

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

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

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

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

Код такой

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

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

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

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

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

выдает ошибку Поле агрегатного объекта не обнаружено (НоваяКартинка).
Почему так?
43. Ёпрст 1063 08.05.09 10:06 Сейчас в теме
(42) Кисти_.Объект.НоваяКартинка(400,200);
47. vladimir-boy 29.05.09 17:16 Сейчас в теме
Отличная разработка! Просто жесть!!! Автору большой плюс и признание!
Но к сожаленью так и не смог ничего нарисовать в семёрке, так как нет реального живого примера например элементарной обработки или отчётика, где реализован весь етот шедевр!!!
У меня к примеру(42) выдаёт ошибку: "Неудачная попытка создания объекта (АктивИкс)"
Напишите пожалуйста например обрабоку с кодом построения точки, линии на форме!
А вообще огромное человеческое спасибо!!!
48. Ёпрст 1063 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 25 12.05.09 15:54 Сейчас в теме
Уверен, что хорошая разработка. Плюс.
50. Душелов 4013 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. Душелов 4013 22.06.09 11:52 Сейчас в теме
54. MadRabbit 102 22.06.09 11:54 Сейчас в теме
(53) Надо пользователюкартинки по форме перетаскивать, а мне - отслеживать, и при масштабировании, смене ориентации страницы и т.д. учитывать. А как пока не пойму...
55. Душелов 4013 22.06.09 11:56 Сейчас в теме
(54) Данная компонента исключительно для программного рисования. Никаких юзерабилити действий.

Для "перетаскиваний" есть соседняя разработка.
56. MadRabbit 102 22.06.09 12:19 Сейчас в теме
(55) "[VectorDrawing] - Векторная графика в 1С"? Смотрел, можно было бы использовать, есть перетаскивание, можно сделать масштабирование, группировку - все замечательно, но пункт контекстного меню "О компоненте" не дает мне возможности ее использовать в своих разработках. Что, по моему, вполне естественно. По этому хотелось бы все-таки самому попробовать разобраться и написать собственную ВК. Кроме того, все-таки хочеться самому чему-нибуть научиться, а не тупо таскать с ИС чужие разработки.
Душелов; +1 Ответить
57. Душелов 4013 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. Душелов 4013 22.06.09 16:41 Сейчас в теме
(60) Может передаешь несуществующие координаты?

Сделай обработку с примером, где эта ошибка показывается....
62. rboy 22.06.09 17:08 Сейчас в теме
Сейчас сделаю, куда выложить?... я недавно на этом сайте.
63. Душелов 4013 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. Душелов 4013 22.06.09 20:08 Сейчас в теме
(64) Скачивай обновление.
В своей обработке в процедуре рисования квадратиков добавь очистку памяти

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

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

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

Добавлено:

- ОчиститьПамять();
67. rboy 23.06.09 12:31 Сейчас в теме
Вроде заработало после того как поменял СоздатьКисть(r, g, b); даже Рис.ОчиститьПамять(); не использовал.
68. Душелов 4013 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. Душелов 4013 23.06.09 17:31 Сейчас в теме
(72) У меня ее нет.
Поставь себе SP1 для фреймворка, видимо этот метод был добавлен позже.
75. Душелов 4013 25.06.09 22:15 Сейчас в теме
(72) Обновил, пробуй.
Добавил еще сглаживание.
70. rboy 23.06.09 12:45 Сейчас в теме
а нельзя ли воткнуть процесс очистки памяти поместить в функцию НоваяКартинка(), а то запаришся каждому объяснять для чего она нужна.
71. Душелов 4013 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. Душелов 4013 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. Душелов 4013 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. Душелов 4013 17.10.09 14:14 Сейчас в теме
(83)

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


линия не выводится на форму, пока не свернешь/развернешь окно. Как устроить обновление изображения или что-то в этом роде?
89. asdfgcom 415 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. Душелов 4013 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 Ответить
Оставьте свое сообщение