Я тут немного почитал о графике, меня интересуют простые операции, загрузить/сохранить изображение, создать изображение, отрисовать на нём точку/линию/квадратик/кружёк и т. д,. Я так понял есть 2 способа работать с графикой, либо через призму конструкции Screen, что больше подходит для консольных или графических полноэкранных приложений, либо через внешние библиотеки типа Cairo. Правильно я понимаю? Некой виртуальной "канвы" или "изображения" на уровне средств компилятора или независимой библиотеки кода нет?
Я тут немного почитал о графике, меня интересуют простые операции, загрузить/сохранить изображение, создать изображение, отрисовать на нём точку/линию/квадратик/кружёк и т. д,. Я так понял есть 2 способа работать с графикой, либо через призму конструкции Screen, что больше подходит для консольных или графических полноэкранных приложений, либо через внешние библиотеки типа Cairo. Правильно я понимаю? Некой виртуальной "канвы" или "изображения" на уровне средств компилятора или независимой библиотеки кода нет?
Виртуальный канвас как раз можно делать через ScreenRes
Код
Open Cons For Output As #2 '' открываем 2-е окно консоли
Dim image As Any Ptr = ImageCreate( 64, 64, RGB(0, 128, 0) )
If image = 0 Then Print "Failed to create image." Sleep End -1 End If '' Сделать полупрозрачным красный круг в центре изображения. Circle image, (32, 32), 28, RGBA(255, 0, 0, 128),,, 1.0, f '' Рисуем изображение на экране Put (120, 60), image
'' Удаляем изображение. ImageDestroy image
?#2, "write 2" '' пишем в 2-е окно консоли
Sleep
Если последний параметр ScreenRes заменить на "-1" графическое окно будет невидимо, при этом можно в нем рисовать как обычно А виртуальное полотно в данном случае - image, созданнное с помощью ImageCreate
Т.е. рисовать можно как в графическом окне, так и в созданных через ImageCreate "изображениях" К этим изображениям можно получать доступ через указатель, благодаря чему freebasic можно связать практически с любыми графическими данными. Фото, видео, рисование, интерфейсы - все что угодно. Вещь очень удобная. Существенный минус один - нет поддержки многопоточности, и иногда это создает проблемы. Я, правда, не любитель использовать для вывода на экран само графическое окно - неудобное оно (на оф форуме очень любят с ним работать, но боюсь, так дальше простейших программ дело не пойдет - примерно как строить дома с одним топором).
Что касается загрузки изображений, если на Linux:
1) Кроссплатформенно можно загружать bmp через встроенную функцию bload
Я, правда, не любитель использовать для вывода на экран само графическое окно - неудобное оно (на оф форуме очень любят с ним работать, но боюсь, так дальше простейших программ дело не пойдет - примерно как строить дома с одним топором).
Посмотрим что он с GTK построит. Уже видели много раз весь этот энтузиазм и иллюзии за неделю выучить язык, создать ракету и лететь в космос))). Расписывал во всех красках какого качества софт из этого получается в итоге. А ошибка банальнее некуда, вместо работы за письменным столом люди выбирают компьютер и это фатально, увы. И хомяков формошлёпов(назовём вещи своими именами) от этих моих слов всегда бомбит, т.к. эго толстое не спрячешь, все деловые, а предъявить нечего .
FbGfx - шикарнейшее кроссплатформенное решение, можно писать профессионально тупо на нём, дело в человеке. Аналогия про топор имхо - не катит. А то, что эту штуковину можно использовать и без инициализации графического режима - так это вообще шедеврально. Не знаю как на линуксе, но под виндой - полная халява. Да работает библа небыстро, но этого почти всегда хватает на элементарные нужды. А когда требуется что-то сложнее всегда есть возможность перейти на OpenGL, тоже кроссплатформа.
Это не Callback, а обычная работа с указателями. Почитайте внимательнее что такое Callback(функции обратного вызова), зачем он нужен и про его аналог(прерывания) в системах реального времени.
Уже видели много раз весь этот энтузиазм и иллюзии за неделю выучить язык,создать ракету и лететь в космос)))
Ну вот я примерно 1 год потратил на изучение FB, чтобы написать те программы, которые хотел. И я тоже раньше задавал "глупые" вопросы. И вот уже 4 года пишу на этом форуме.
ЦитатаDarkDemon ()
FbGfx - шикарнейшее кроссплатформенное решение, можно писать профессионально тупо на нём, дело в человеке.Аналогия про топор имхо - не катит.
Для простых пользователей программ функционал маловат.
ЦитатаDarkDemon ()
А то, что эту штуковину можно использовать и без инициализации графическогорежима - так это вообще шедеврально.
Не помню, чтобы писал такое
ЦитатаDarkDemon ()
Да работаетбибла небыстро, но этого почти всегда хватает на элементарные нужды. А когда требуется что-то сложнеевсегда есть возможность перейти на OpenGL, тоже кроссплатформа.
Работает быстро, как раз. А если нужно вывести в несколько окон? У меня есть программа, которая выводит в картинку в 7 графических окон, и это не очень-то удобно Поэтому я перешел на IUP+CD
Для простых пользователей программ функционал маловат.
Чем? Даже толстый софт, к примеру, GIMP имеет в себе однооконный режим, от этого его функционал меньше не становится. Всё зависит от архитектуры софта. Что сделаешь - так и будет. Проф GUI не освобождает от разработки архитектуры и алгоритмов прикладных областей. Что-то можно переложить на библиотеку, но это всегда нежелательно, помню rrrFer бросал ссылку на статью https://www.viva64.com/ru/b/0391/ там есть интересный пункт 41 и писали её не лохи, а умные дядьки профи. Для ТС-а же там есть пункт 18. Ещё была ссылочка от locm-а на статью про то, что 3GL идеология нагибает 4GL, причём там были авторитетные дядьки, но ведь юные хомяки это не читают, ведь они знают, что надо быть модными и современными))) правда, а зачем читать? "Не холивара ради, но знания для..."
ЦитатаWQ ()
Работает быстро, как раз.
Тестил его спрайтовыми сетками. На разных виндах, разном железе и компах. Были случаи на настройках без вертикальной синхронизации, когда рендеринг срабатывал очень быстро, происходило это рандомно, от чего зависит запуск этого "супер мега" режима понять так и не удалось, по умолчанию же - скорость рисовки очень медленная, хоть её и хватает, а на большее, чем дефолт - не рассчитываю.
ЦитатаWQ ()
И я тоже раньше задавал "глупые" вопросы.
Одно дело задавать глупые вопросы. Совсем другое пытаться на скорую лапу всё охватить необъятное. И не зная даже азов ЯП, сразу лезть в дебри, требовать обнов и суперсовременности, Стас помнит, я этой хернёй по обновам тоже страдал поначалу, нет в этом никакого толка даже малейшего. Задавали их все, без исключения. Отчасти их задавал, потому что не было никакой инфы, т.е. гугл что-то давал, но нормальные ссылки мне все кидал Стас. Это сейчас известно, что если зайти на его сайт в раздел статей, то можно найти там учебник:
Который сразу избавит от тысяч вопросов. Но попробуй наткнуться на него в гугле не зная точного запроса. И вот вопрос, кому он его писал? Это всё равно что сейчас полезу на Си++, зайду на форум и такой весь при делах: "парни дайте мне то, вот это и пожалуйста ещё вот это, сейчас быренько за пару дней всё это разгребу, как у вас там с обновами всё в поряде? Как ваще? Чё по чём? Сёмки есть? Ща всё легко, изи, никаких проблем, на других ЯП кодил - всё збс." Т.е. иммидж такого, не парящегося человека, у которого "всё на мазе". А реакция мне известна - меня там прямым текстом отправят далеко далеко и правильно сделают.
Потому что был справедливо задан вопрос, "чем не устроил Паскаль?" в ответ был получен не ответ, а цирковое представление. И если бы человек сказал, "ну знаешь, мол лениво прописывать BEGIN\END-ы, := взаместо = , также постоянно писать ; в конце, IDE неудобная, ну а ещё такая-то и такая-то причина" или как один знакомый демщик говорил "тайпкастинги неудобные", который под DOS херачил демки на 8k строк с ООП и ассемблером на пасе, то ещё бы хоть как-то понял такой расклад... Меня возмущает такая херня, вот честно. Например, прежде чем понять, что меня Blitz3D не устроил, покодил на нём основательно изучил операторы, структуры, типы данных, тонну литературы разгрёб, накодил прототипы своих задач, на PB та же ситуация была, 1.5 года его лопатил как проклятый местами задирая locm-а(ну его тогда все драли, поэтому он не серчал, хотя это было и дико).
ЦитатаWQ ()
Ну вот я примерно 1 год потратил на изучение FB, чтобы написать те программы, которые хотел.
А какой у тебя ник на других форумах? Ну или напиши что за проги, мне интересно. Если интересно могу свои расписать чуть позже.
ЦитатаWQ ()
Поэтому я перешел на IUP+CD
И как? Результатом доволен?
ЦитатаWQ ()
А если нужно вывести в несколько окон? У меня есть программа, которая выводит в картинку в 7 графических окон
Можно сделать, если задаться целью. Главное задаться целью и пнуть себя под жопу - это самое сложное. На Window9 нет препятствий писать мультиокна, двухоконки писал. На FBGfx трехоконные писал, просто запуская несколько прог.
ЦитатаWQ ()
Не помню, чтобы писал такое
GFX_NULL, то самое -1 в конце, оно в память по ScreenPtr колбасит... Помню писал на GDI на эту тему, цикл сообщений там был в отдельном потоке, рисовка шла в основном. Более ничё не помню, давно писал.
Ну или напиши что за проги, мне интересно. Если интересно могусвои расписать чуть позже.
Отправил в личку ссылку на пример Но прошу не распространяться о том, что это на FB и я автор, пока это не доведено до лучшего состояния Но и не хочу чтобы меня пустозвоном посчитали, даже один человек... И да в этой программе 5-6-7 графических окон
ЦитатаDarkDemon ()
И как? Результатом доволен?
Более-менее Все нужно допиливать, а ковыряться в исходниках на C не очень хочется А так IUP,CD,IM видимо поддерживает 1 человек, оно медленно развивается, много мелких неудобсв
В CD канвасы с теми же возможностями, что и ImageCreate в FB, потоконезависимы, а которые не потоконезависимые, более удобные
Сообщение отредактировал WQ - Понедельник, 16.04.2018, 21:45
Но и не хочу чтобы меня пустозвоном посчитали, даже один человек...
Ни в коем случае. Практиков видно сразу. Хотя и не верится, что за год, но значит талант, фигли тут, я же всегда говорил что сам лоссось, ниже середнячка.
ЦитатаWQ ()
Но прошу не распространяться о том, что это на FB и я автор, пока это не доведено до лучшего состояния
Мне можно доверять.
Ваша прога конечно потолще любой моей, уже реализованной будет и это факт, просто не использовал сторонних инструментов, всё пишу руками. В личку бросать ничего не буду, напишу тут под спойлером, хоть это и оффтопик. На самом деле мой ник >Quiet Snow< тут просто зарегистрировался через сторонний сервис, не так как хотелось бы. Мне то особо прятать нечего:
2) Один знакомый просил несколько прог, для моддинга старой игрушки (2011-2014гг) - Редактор карт - PB (сложнейшая прога 2 года реверса, пол года наработка API, 2.5 недели - сборка проекта) - Утилита для редактора FB (фигня на пару килострок, все элементы GUI - кустарные, даже drag&drop есть) - Программа замены тайлов PB (фигня на пару килострок) - Работа с атрибутами тайлсетов FB (фигня на пару килострок) - Подбор смещений юнитов FB (мелкая фигня) https://docs.google.com/documen....dit
3) FB: AutoOper код и бинарки коммерч., поэтому только документацию бросаю :https://yadi.sk/i/bdk1iK_rrM5Pq Тут была заметка о создании этой проги, не помню в каком разделе. Она писана на Window9.
Всякая развлекуха: змейки(QB, FB), тетрисы(QB, FB), лабиринты(QB, FB) у вас такого барахла, наверное, тонны было. На форумах ещё сотни прог разных для студиков, где-то даже что-то толстое было, но уже не вспомню.
Ещё была трёхмерная дипломка и курсач на Паскале(TurboPascal 7.0).