![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 25.05.2008
Сообщений: 8
|
![]()
Добрый день.
Я начинающий дельфист. Владею лишь языком программирования 1С. Мне необходимо написать библиотеку dll со следующими методами: ЗагрузитьКартинку(Каталог,ИмяФайла) ; // загружает картинку (карта города) НарисоватьКружокНаКартинке(Х,У,Ради ус); //рисует на загруженной картинке кружок. СохранитьФрагмент(Х,У,Ширина,Высота ,Каталог,ИмяФайла); //сохраняет фрагмент загруженной картинки в каталог Принцип работы с данной библиотекой будет такой: В среде 1С я создаю объект("моя_библиотека.dll") И начинаю использовать его методы. 1. С помощью метода ЗагрузитьКартинку , я подгружаю картинку в память 2. Рисую на картинке кружок(при необходимости несколько) 3. Сохраняю фрагмент в каталоге. Загружаю этот фрагмент из каталога в программу 1С И вот. Решил написать руками на Дельфи 7 И вообще давно уже хотел изучить этот язык Но чтобы начать... Помогите кодом данной библиотеки, а уже дальше я буду потихоньку дорабатывать её и постигать чудеса программирования в Дельфи. На текущий момент я уже написал скелет библиотеки. (по туторам) С одним методом ПолучитьХендлГлавногоОкна1С() Все вроде работает.... Нужна реализация трёх ,указанных выше методов. С уважением.... |
![]() |
![]() |
![]() |
#2 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Что то я не совсем понял насчет получения хэндла 1С окна. Дайте код посмотреть, а там уже может и посоветуем что-то.
Вроде понял что вам надо, DLL ничего не передает в 1C? Только параметры получает и с файлами работает? Тогда вот направление куда копать: TBitmap - объект Дельфи содержащий битмап (если карта в bmp) TJpegImage - объект Дельфи для Jpeg (если карта в Jpeg) TCanvas - канва, холст, объект на котором происходит рисование (есть у TBitmap) Canvas.Ellipse - метод канвы, рисует эллипс Canvas.CopyRect - метод канвы, копирует ее часть на другую канву LoadFromFile - метод, загрузка из файла (есть и у TBitmap и у TJpegImage) SaveToFile - метод, сохранение в файл (есть и у TBitmap и у TJpegImage)
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 26.05.2008 в 21:49. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 25.05.2008
Сообщений: 8
|
![]()
Вообщем написал код
Скомпилировал Вопрос про этот фрагмент: procedure TMain.LoadBitmap(AFileName: PChar); Мне посоветовали использовать :PChar вместо :String Я так и сделал... В результате при попытке использовать dll в программе 1С при запуске LoadBitmap(ЗдесьПутьККартинке_bmp) Выскакивает сообщение Плохой тип переменной |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 22.06.2007
Сообщений: 414
|
![]()
LoadBitmap(PChar(ЗдесьПутьККартинке _bmp))
Нет невыполнимых задач, всё дело времени...
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 25.05.2008
Сообщений: 8
|
![]()
Вот фрагмент процедуры
Код:
Последний раз редактировалось mdbm; 27.05.2008 в 13:38. |
![]() |
![]() |
![]() |
#6 |
Регистрация: 25.05.2008
Сообщений: 8
|
![]()
Ура !!!
Получилось... Код:
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 25.05.2008
Сообщений: 8
|
![]()
Вопрос:
При обрезании карты города , полученный фрагмент получается немного сплющенным Код:
Оригинал карты города имеет разрешение 95,98 точек на дюйм А обрезанный фрагмент имеет разрешение 96 точек на дюйм Как это отрегулировать внутри процедуры ? |
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Скорее это происходит из-за того, что у Вас области разных размеров:
Buf.Canvas.CopyRect(Rect(0,0,W,H),Image.Canvas,Rect(x,y,x+W,y+W)); |
![]() |
![]() |
![]() |
#9 |
Регистрация: 25.05.2008
Сообщений: 8
|
![]()
))) спасибо
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 25.05.2008
Сообщений: 8
|
![]()
Делаю окно сообщения, которое будет всплывать в месте клика мышкой.
Организовал процедуру , вызывающую появление формы на экране. Вопросы: 1. Как сделать, чтоб форма была голой, т.е. без верхней синей полоски. 2. Как сделать, чтоб окно формы, было поверх всех окон в 1С ? |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
программное переключение словаря при проверке орфографии методами MS Word | tojhto | Общие вопросы Delphi | 2 | 06.09.2008 01:54 |
Пишу Media Player (помогите) Delphi | Reani | Помощь студентам | 4 | 12.06.2008 11:51 |
Помогите пишу дипломку, срочно надо разобраться | Irinka | Помощь студентам | 7 | 29.03.2008 11:25 |
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. | SkyM@n | Фриланс | 3 | 29.12.2007 16:21 |
Автоматизация обработки изображений и их оцифровки методами делфи | helpme32 | Мультимедиа в Delphi | 1 | 14.12.2007 13:03 |