Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 16 июн 2025, 20:48

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Подскажите элемент управления
СообщениеДобавлено: 15 июл 2017, 20:01 
Не в сети

Сообщения: 116
Откуда: Каменск-Уральский
Я программирую в WinApi и мне требуетсся элемент управления такой, чтоб в нём можно было графики чертить и формулы математические выводить (со степенями, интегралами, дробями). Ещё надо чтоб с него это всё дело можно было копировать в буфер обмена, а также распечатывать. Заранее спасибо.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 15 июл 2017, 20:44 
Не в сети
Администратор
Аватара пользователя

Сообщения: 189
:D :D :D

Вот это подход! Вот это я понимаю!

Смотри, план такой!
1) На форме надо создать графический контекст (то есть где это все рисовать). Приложение - это всего лишь простое кино, которым управляет зритель. Это можно сделать несколькими способами.
1.1 Исползовать GDI или GDI+ и функции раборты с битмапом:
GetDC, CreateCompatibleDC и т.д для отображения и рисования на созданном битмапе.
1.2 Использовать напрямую прорисовку в память, копирования участков памяти и т.д
CreateDIBSection и т.п

Попробуй разберись с контекстом... То есть попросту создай картинку (битмап) на форме, и нарисуй на ней линию для простоты...

Код: "OBERON"
  1. WM_PAINT:
  2. DC := WinApi.GetDC(0);
  3. HDC := WinApi.CreateCompatibleDC(DC);
  4. bmp := WinApi.CreateCompatibleBitmap(HDC, 100, 100);
  5. WinApi.SelectObject(HDC, bmp);
  6. WinApi.BitBlt(hDC, 0, 0, 100, 100, Comp, 0, 0, WinApi.SRCCOPY);
  7. WinApi.DeleteObject(bmp);
  8. WinApi.DeleteDC(HDC);
  9. .........


Вот на память что то такое...


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 17 июл 2017, 11:46 
Не в сети

Сообщения: 116
Откуда: Каменск-Уральский
Нарисовал линию, правда только на форме.
Код: "OBERON"
  1. hdc := WinApi.GetDC(wnd);
  2. hdcMem := WinApi.CreateCompatibleDC(hdc);
  3. hBitmap := WinApi.CreateCompatibleBitmap(hdc,100,100);
  4. res := WinApi.SelectObject(hdcMem, hBitmap);
  5. res := WinApi.BitBlt(hdc, 0, 300, 100, 100, hdcMem, 100, 100, WinApi.WHITENESS);
  6. res := WinApi.MoveToEx(hdc,10,19,pt);
  7. res := WinApi.LineTo(hdc,30,300);

А как слинковать и затем отобразить рисунок png? И как вставить линию в этот графический контекст?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 17 июл 2017, 17:46 
Не в сети
Администратор
Аватара пользователя

Сообщения: 273
Откуда: Россия
Нарисовать png можно средствами GDI+. Вот пример обертки ББ для GDI+: http://www.hardforum.ru/t56710/.
Правда, в примере нет вывода рисунков в png-формате, но в самом модуле GDI+ такие средства есть.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 18 июл 2017, 13:36 
Не в сети

Сообщения: 116
Откуда: Каменск-Уральский
А как эту обёртку запустить? Скомпилировал - ничего не произошло :(


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 18 июл 2017, 18:15 
Не в сети
Администратор
Аватара пользователя

Сообщения: 273
Откуда: Россия
Len писал(а):
А как эту обёртку запустить? Скомпилировал - ничего не произошло :(

В этом примере 3 модуля. Запускать нужно Test1 из модуля GraphicsTest1. Но сам я не пробовал.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 19 июл 2017, 01:52 
Не в сети

Сообщения: 116
Откуда: Каменск-Уральский
Цитата:
Запускать нужно Test1 из модуля GraphicsTest1

Я его и запускаю, предварительно откомпилировав первые два. Правда придётся в модуле Test1 дописать тело или вызывать функцию Test1 коммандером. Но всё равно ничего не происходит.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 19 июл 2017, 18:35 
Не в сети
Администратор
Аватара пользователя

Сообщения: 273
Откуда: Россия
У меня получилось. Запускал в XDev версия 2436 (вроде бы последняя). Использумая подсистема Graphics во вложении. При запуске командера GraphicsTest1.Test1 появилось новое окно цвета хаки с зеленоватой полоской в левом верхнем углу.


Вложения:
Graphics.zip [6.67 КБ]
Скачиваний: 710
Комментарий к файлу: Пример использования обертки для GDI+
gdi.jpg
gdi.jpg [ 86.14 КБ | Просмотров: 23205 ]
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 19 июл 2017, 18:38 
Не в сети

Сообщения: 116
Откуда: Каменск-Уральский
А на BlackBox`е ничего.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 19 июл 2017, 18:49 
Не в сети
Администратор
Аватара пользователя

Сообщения: 273
Откуда: Россия
Len писал(а):
А на BlackBox`е ничего.

Какая версия ББ? Какая ОС?
Проверил сейчас на https://blackbox.obertone.ru/unstable/m ... a1.018.zip, тоже работает. ОС- Windows 7/64

В журнале Log выдает какие-то ошибки? ББ оригинальный или может быть какие-то подсистемы удалял?


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club