Оберон-клуб «ВЄДАsoft»
https://zx.oberon.org/forum/

Подскажите элемент управления
https://zx.oberon.org/forum/viewtopic.php?f=79&t=323
Страница 1 из 2

Автор:  Len [ 15 июл 2017, 20:01 ]
Заголовок сообщения:  Подскажите элемент управления

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

Автор:  S.Atan [ 15 июл 2017, 20:44 ]
Заголовок сообщения:  Re: Подскажите элемент управления

: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. .........


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

Автор:  Len [ 17 июл 2017, 11:46 ]
Заголовок сообщения:  Re: Подскажите элемент управления

Нарисовал линию, правда только на форме.
Код: "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? И как вставить линию в этот графический контекст?

Автор:  Saferoll [ 17 июл 2017, 17:46 ]
Заголовок сообщения:  Re: Подскажите элемент управления

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

Автор:  Len [ 18 июл 2017, 13:36 ]
Заголовок сообщения:  Re: Подскажите элемент управления

А как эту обёртку запустить? Скомпилировал - ничего не произошло :(

Автор:  Saferoll [ 18 июл 2017, 18:15 ]
Заголовок сообщения:  Re: Подскажите элемент управления

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

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

Автор:  Len [ 19 июл 2017, 01:52 ]
Заголовок сообщения:  Re: Подскажите элемент управления

Цитата:
Запускать нужно Test1 из модуля GraphicsTest1

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

Автор:  Saferoll [ 19 июл 2017, 18:35 ]
Заголовок сообщения:  Re: Подскажите элемент управления

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

Вложения:
Graphics.zip [6.67 КБ]
Скачиваний: 710
Комментарий к файлу: Пример использования обертки для GDI+
gdi.jpg
gdi.jpg [ 86.14 КБ | Просмотров: 23210 ]

Автор:  Len [ 19 июл 2017, 18:38 ]
Заголовок сообщения:  Re: Подскажите элемент управления

А на BlackBox`е ничего.

Автор:  Saferoll [ 19 июл 2017, 18:49 ]
Заголовок сообщения:  Re: Подскажите элемент управления

Len писал(а):
А на BlackBox`е ничего.

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

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

Страница 1 из 2 Часовой пояс: UTC + 2 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/