| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > Графика на Паскале |
| Автор: Irin 12.11.2006, 21:53 |
| Помогите пожалуйста! Ответьте на следующие вопросы: Можно ли загрузить в Паскале цвета, кроме стандартных(например, использая коды RGB) если да, то как? Можно ли сделать градиентную заливку, и вставить картинки формата JPG(или Gif)? И можно ли работать одновременно и в графическом, и в текстовом режиме (Т.е. чтобы была красивая заставка с картинкой, пользователь нажимал на кнопки, и ему здесь же рисовался бы график)? Заранее благодарна, с уважением, Irin. |
| Автор: Irin 12.11.2006, 22:55 |
| Большое спасибо! Только где найти эти декодеры? И как их установить? |
| Автор: Irin 13.11.2006, 00:51 |
| Да, обидно... И еще вопрос про символьные массивы: Если в задании сказано, что дан массив из литер, ограниченный точкой, то как его считывать? Если через цикл While, то как описывать тип массива? |
| Автор: Alexeis 13.11.2006, 01:02 |
А что уже удалось установить режим True Color под дос? Я встречал драйвера VESA, но при попытке установить что-то чуть более менее серьезное чем 640х480х4 выводит частоту моего монитора ниже всяких границ и он просто вырубается. А для JPEG глубина 24бита на пиксель обязательна иначе это будет не Jpeg а какой-то кошмар |
| Автор: AlexST 13.11.2006, 01:04 | ||||
Поясни это. Ну символьный, наверно. |
| Автор: Irin 13.11.2006, 01:19 |
| Ну задание такое: Дан текст из цифр, за которыми следует точка. Нужно напечатать его в обратном порядке и указать наиболее часто встречающююся цифру. Мне не совсем понятно, как задавать тип этого массива. Сначала я думала задать его как тип диапазон от символьного от "1" до "9", но так он почему-то работает неправильно. А если задавать просто символьный тип, то проверять после каждого введенного символа цифра он или нет, по-моему не рационально. И насчет точки. Если я правильно поняла, имеется в виду, что длина произвольная, и зависит от точки. Но как тогда задавать длину массива, если она заранее не определена? А если считать, что длина определена, то причем тут точка? |
| Автор: Alexeis 13.11.2006, 01:27 | ||
Они выполняются (Write, Writeln), но текст не выводят. Текст выводит уже другая графическая функция OutTextXY(); но это вывод текста в графическом режиме, а не совмещение графического и текстового. |
| Автор: AlexST 13.11.2006, 14:19 | ||||||
Пардон. Извиняюсь. Немного не точно выразился. ))))) Операторы ввода (Read, Readln) работают с эхом. Вывода конечно ничего не печатают.
|
| Автор: Irin 13.11.2006, 21:55 |
| Большое спасибо, вы мне очень помогли. И еще вопрос: где можно найти F_Mouse.TPU? В своих папках не нашла. |
| Автор: Alexeis 13.11.2006, 22:02 |
| Irin, Это нестандартный модуль. Вообще стандартных модулей для мышки я не встречал, а вот нестандартных пруд пруди. Лично я пользовался модулем мышки из книги Фаронова часть 2. Но в инете полно любых других. |
| Автор: Nicholas_S 14.11.2006, 13:33 |
| Irin, могу помочь кое-чем, например, установкой режима от 640x480 до 1024x768 в 65535 цветах. Есть пример готовый с выводом фракталов. Насчет форматов аля JPG, к сожалению, не помогу, не приходилось писать собственноручно. |
| Автор: Alexeis 14.11.2006, 13:40 |
| Nicholas_S, Давай выкладывай, мне тоже интересно |
| Автор: Nicholas_S 14.11.2006, 15:17 |
| alexeis1, обязательно выложу, как доберусь |
| Автор: Nicholas_S 14.11.2006, 18:16 |
| См. аттачмент. Файл "coregrph.pas", собственно, есть сам "движок". Позволяет установить 4 режима VESA: 320x240, 640x480, 800x600, 1024x768. Глубина цвета: 65535 цветов, т.е. 16 бит. В модуле есть доп. функции, половина самописные, половина нет. Некоторые, как то окраска пикселей и смешивание цветов, на asm'е. Остальные обычный код. Файл "main.pas" - маленький костяк. Есть рабочий пример, реализующий рисование фракталов (Жулиа, Мандельброт), "fractals.exe". Вирей нет, код не вредоносный, но страдающим паранойей лучше сразу удалить Забыл. Irin, есть также самописные модули, которые с пом. которых можно работать с текстом в графическом режиме, т.е. вывод своих знаков, чисел (также верхнего регистра, напр.). Код довольно простой, так что если потребуется - свисти. Может работать как с обычным graph.tpu, так и с vesa, т.е. функции вывода одни и те же. |
| Автор: Irin 14.11.2006, 22:10 |
| Nicholas_S, огромное спасибо за coregrph.pas. Если тебе не сложно, выложи, пожалуйста эти самописные модули. |
| Автор: Nicholas_S 14.11.2006, 22:50 |
| См. аттачмент. Файл модуля называется "kgnums.pas" (почему не помню Файл "kgalf.pas" - набор "карт" символов с помощью простейшего массива. Размер символов довольно маленький (5x5 px), поэтому при желании можешь доработать. По умолчанию подключается модуль graph. Функции: 1. procedure DrawTxt (const X, Y : Integer; const Text : String; const Color : Integer; const Anim, Trans : Boolean); Рисует текст в заданных координатах заданного цвета. Anim - отрисовывать посимвольно с задержкой. Trans - прозрачный фон. 2. function TxtWidth (const Text : String) : Integer; Возвращает ширину строки. 3. function TxtHeight (const Text : String) : Integer; Возвращает высоту символа (в принципе, бесполезна, т.к. макс. размер заведомо известен, но все-же так "правильнее"). 4. procedure DrawFrameTxt (const X, Y : Integer; const Text : String; const FrameColor, FillColor, TextColor : Integer; const W, H : Integer) Рисует текст в заданных координатах заданного цвета, обрамляя рамкой заданного цвета заливки, границы и размеров. Дерзай. |
| Автор: Irin 15.11.2006, 18:06 |
| Nicholas_S, Cпасибо. Только ты мог-бы в двух словах рассказать, как ты сделал меню на паскале, и как совместил его с графикой? (в программе про фракталы) |
| Автор: Nicholas_S 15.11.2006, 18:22 |
| Irin, да, мог бы. Это еще один модуль. |
| Автор: Irin 15.11.2006, 18:26 |
| Nicholas_S, а можно как-нибудь проще более-менее нормальное меню сделать? |
| Автор: Nicholas_S 15.11.2006, 18:38 | ||
| Я могу выложить и этот модуль, но не думаю, что он подойдет, в том плане, что там достаточно много кода, потому как меню универсальное. Мне кажется тебе проще будет написать свою реализацию несложного меню. Например, у тебя сейчас есть модуль для вывода текста. Там есть процедура вывода обрамленного текста - используй ее для вывода пунктов меню. Например (пишу на коленке сейчас, так что ошибки могут быть):
Что-то в этом роде. Экспериментируй. |
| Автор: Irin 15.11.2006, 18:44 |
| Nicholas_S, Буду пробовать |
| Автор: XupyprMV 16.11.2006, 10:57 |
| Я в свой время для нормальной графики юзал TMT Pascal http://www.tmt.com. Там есть такая забавная процедурка: procedure SetSVGAMode(XRes, YRes, BPP, VMode: Word); Sets SVGA video mode with given resolution and color depth. |
| Автор: Nicholas_S 16.11.2006, 12:17 |
| XupyprMV, насколько я понял, он работает минимум с DOS 32-bit, PM. А это уже не 16. |
| Автор: Irin 19.11.2006, 17:45 | ||
| Помогите найти ошибку в коде! (паскаль) Задача: удалить из матрицы все строки и столбцы, на пересечении которых стоит максимальный элемент. Вот процедура удаления:
n-число строк, m-столбцов |