FreeBasic
Главная
Вход
Регистрация
Понедельник, 30.12.2024, 20:03Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Синтаксис и конструкции языка FreeBasic
ТесторДата: Пятница, 13.04.2018, 16:17 | Сообщение # 16
Сержант
Группа: Пользователи
Сообщений: 24
Репутация: 0
Статус: Offline
WQ, спасибо за подсказку.
Да кстате это ещё называется "функция обратного вызова" или Callbac, по запросу "FreeBasic Callback" находится то же вполне вменяемый пример: https://www.freebasic-portal.de/tutorials/callback-funktionen-69.html

Я тут немного почитал о графике, меня интересуют простые операции, загрузить/сохранить изображение, создать изображение, отрисовать на нём точку/линию/квадратик/кружёк и т. д,. Я так понял есть 2 способа работать с графикой, либо через призму конструкции Screen, что больше подходит для консольных или графических полноэкранных приложений, либо через внешние библиотеки типа Cairo. Правильно я понимаю? Некой виртуальной "канвы" или "изображения" на уровне средств компилятора или независимой библиотеки кода нет?
 
WQДата: Пятница, 13.04.2018, 19:09 | Сообщение # 17
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата Tестор ()
Я тут немного почитал о графике, меня интересуют простые операции, загрузить/сохранить изображение, создать изображение, отрисовать на нём точку/линию/квадратик/кружёк и т. д,. Я так понял есть 2 способа работать с графикой, либо через призму конструкции Screen, что больше подходит для консольных или графических полноэкранных приложений, либо через внешние библиотеки типа Cairo. Правильно я понимаю? Некой виртуальной "канвы" или "изображения" на уровне средств компилятора или независимой библиотеки кода нет?

Виртуальный канвас как раз можно делать через ScreenRes
Код
Open Cons For Output As #2 '' открываем 2-е окно консоли

Const SCREEN_W = 520
Const SCREEN_H = 340
ScreenRes SCREEN_W, SCREEN_H, 32,,0 '' 0 заменить на -1
Color , RGB(255, 100, 255)
Cls

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

2) Пример GTK
http://freebasic.ucoz.com/forum/18-315-1 

3) Библиотека FBImage для Linux и Win
https://www.freebasic.net/forum/viewtopic.php?f=14&t=24105#p212929
Минимальные по размеру функции для загрузки png, bmp, jpg

4) пример для файлов tiff, библиотека libtiff

https://www.freebasic.net/forum....p231239

5) Хорошие функции для загрузки bmp, jpg, png, gif в библиотеке FLTK, искать на оф форуме

Все эти вещи дают на выходе изображение в формате fb image\ImageCreate


Сообщение отредактировал WQ - Пятница, 13.04.2018, 19:10
 
DarkDemonДата: Суббота, 14.04.2018, 08:34 | Сообщение # 18
Полковник
Группа: Друзья
Сообщений: 200
Репутация: -1
Статус: Offline
Цитата WQ ()
Я, правда, не любитель использовать для вывода на экран само графическое окно - неудобное оно (на оф форуме очень любят с ним работать, но боюсь, так дальше простейших программ дело не пойдет - примерно как строить дома с одним топором).

Посмотрим что он с GTK построит. Уже видели много раз весь этот энтузиазм и иллюзии за неделю выучить язык,
создать ракету и лететь в космос))). Расписывал во всех красках какого качества софт из этого получается в итоге.
А ошибка банальнее некуда, вместо работы за письменным столом люди выбирают компьютер и это фатально, увы.
И хомяков формошлёпов(назовём вещи своими именами) от этих моих слов всегда бомбит, т.к. эго толстое не
спрячешь, все деловые, а предъявить нечего happy .

FbGfx - шикарнейшее кроссплатформенное решение, можно писать профессионально тупо на нём, дело в человеке.
Аналогия про топор имхо - не катит. А то, что эту штуковину можно использовать и без инициализации графического
режима - так это вообще шедеврально. Не знаю как на линуксе, но под виндой - полная халява. Да работает
библа небыстро, но этого почти всегда хватает на элементарные нужды. А когда требуется что-то сложнее
всегда есть возможность перейти на OpenGL, тоже кроссплатформа.

Цитата Тестор ()
по запросу "FreeBasic Callback" находится то же вполне вменяемый пример: https://www.freebasic-portal.de/tutorials/callback-funktionen-69.html

Это не Callback, а обычная работа с указателями. Почитайте внимательнее что такое Callback(функции обратного вызова),
зачем он нужен и про его аналог(прерывания) в системах реального времени.
 
WQДата: Суббота, 14.04.2018, 12:38 | Сообщение # 19
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата DarkDemon ()
Уже видели много раз весь этот энтузиазм и иллюзии за неделю выучить язык,создать ракету и лететь в космос)))
Ну вот я примерно 1 год потратил на изучение FB, чтобы написать те программы, которые хотел. И я тоже раньше задавал "глупые" вопросы. И вот уже 4 года пишу на этом форуме.
Цитата DarkDemon ()
FbGfx - шикарнейшее кроссплатформенное решение, можно писать профессионально тупо на нём, дело в человеке.Аналогия про топор имхо - не катит.
Для простых пользователей программ функционал маловат.
Цитата DarkDemon ()
А то, что эту штуковину можно использовать и без инициализации графическогорежима - так это вообще шедеврально.
Не помню, чтобы писал такое

Цитата DarkDemon ()
Да работаетбибла небыстро, но этого почти всегда хватает на элементарные нужды. А когда требуется что-то сложнеевсегда есть возможность перейти на OpenGL, тоже кроссплатформа.
Работает быстро, как раз. А если нужно вывести в несколько окон? У меня есть программа, которая выводит в картинку в 7 графических окон, и это не очень-то удобно
Поэтому я перешел на IUP+CD
 
DarkDemonДата: Суббота, 14.04.2018, 19:13 | Сообщение # 20
Полковник
Группа: Друзья
Сообщений: 200
Репутация: -1
Статус: Offline
Цитата WQ ()
Для простых пользователей программ функционал маловат.

Чем? Даже толстый софт, к примеру, GIMP имеет в себе однооконный режим, от этого его функционал меньше не становится.
Всё зависит от архитектуры софта. Что сделаешь - так и будет. Проф GUI не освобождает от разработки
архитектуры и алгоритмов прикладных областей. Что-то можно переложить на библиотеку, но это всегда
нежелательно, помню rrrFer бросал ссылку на статью https://www.viva64.com/ru/b/0391/
там есть интересный пункт 41 и писали её не лохи, а умные дядьки профи. Для ТС-а же там есть пункт 18.
Ещё была ссылочка от locm-а на статью про то, что 3GL идеология нагибает 4GL, причём там были
авторитетные дядьки, но ведь юные хомяки это не читают, ведь они знают, что надо быть модными и современными)))
правда, а зачем читать? "Не холивара ради, но знания для..."

Цитата WQ ()
Работает быстро, как раз.

Тестил его спрайтовыми сетками. На разных виндах, разном железе и компах. Были случаи на настройках без
вертикальной синхронизации, когда рендеринг срабатывал очень быстро, происходило это рандомно, от чего
зависит запуск этого "супер мега" режима понять так и не удалось, по умолчанию же - скорость рисовки очень
медленная, хоть её и хватает, а на большее, чем дефолт - не рассчитываю.

Цитата WQ ()
И я тоже раньше задавал "глупые" вопросы.

Одно дело задавать глупые вопросы. Совсем другое пытаться на скорую лапу всё охватить необъятное.
И не зная даже азов ЯП, сразу лезть в дебри, требовать обнов и суперсовременности, Стас помнит,
я этой хернёй по обновам тоже страдал поначалу, нет в этом никакого толка даже малейшего. Задавали
их все, без исключения. Отчасти их задавал, потому что не было никакой инфы, т.е. гугл что-то давал, но
нормальные ссылки мне все кидал Стас. Это сейчас известно, что если зайти на его сайт в раздел статей,
то можно найти там учебник:

http://users.freebasic-portal.de/freebasicru/textbook.html

Который сразу избавит от тысяч вопросов. Но попробуй наткнуться на него в гугле не зная точного запроса.
И вот вопрос, кому он его писал? Это всё равно что сейчас полезу на Си++, зайду на форум и такой весь при делах:
"парни дайте мне то, вот это и пожалуйста ещё вот это, сейчас быренько за пару дней всё это разгребу,
как у вас там с обновами всё в поряде? Как ваще? Чё по чём? Сёмки есть? Ща всё легко, изи, никаких
проблем, на других ЯП кодил - всё збс." Т.е. иммидж такого, не парящегося человека, у которого "всё на мазе".
А реакция мне известна - меня там прямым текстом отправят далеко далеко и правильно сделают.

Потому что был справедливо задан вопрос, "чем не устроил Паскаль?" в ответ был получен не ответ, а
цирковое представление. И если бы человек сказал, "ну знаешь, мол лениво прописывать 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 на эту тему,
цикл сообщений там был в отдельном потоке, рисовка шла в основном. Более ничё не помню, давно писал.
 
ТесторДата: Воскресенье, 15.04.2018, 12:55 | Сообщение # 21
Сержант
Группа: Пользователи
Сообщений: 24
Репутация: 0
Статус: Offline
Мне нужно из метода класса (из выполняющегося экземпляра класса) передать указатель на самого себя (на данный экземпляр класса), как это сделать?
 
DarkDemonДата: Понедельник, 16.04.2018, 11:07 | Сообщение # 22
Полковник
Группа: Друзья
Сообщений: 200
Репутация: -1
Статус: Offline
VARPTR(THIS)
 
WQДата: Понедельник, 16.04.2018, 21:37 | Сообщение # 23
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата DarkDemon ()
Ну или напиши что за проги, мне интересно. Если интересно могусвои расписать чуть позже.
Отправил в личку ссылку на пример
Но прошу не распространяться о том, что это на FB и я автор, пока это не доведено до лучшего состояния
Но и не хочу чтобы меня пустозвоном посчитали, даже один человек...
И да в этой программе 5-6-7 графических окон

Цитата DarkDemon ()
И как? Результатом доволен?

Более-менее
Все нужно допиливать, а ковыряться в исходниках на C не очень хочется
А так IUP,CD,IM видимо поддерживает 1 человек, оно медленно развивается, много мелких неудобсв

В CD канвасы с теми же возможностями, что и ImageCreate в FB, потоконезависимы, а которые не потоконезависимые, более удобные


Сообщение отредактировал WQ - Понедельник, 16.04.2018, 21:45
 
DarkDemonДата: Вторник, 17.04.2018, 10:33 | Сообщение # 24
Полковник
Группа: Друзья
Сообщений: 200
Репутация: -1
Статус: Offline
Цитата WQ ()
Но и не хочу чтобы меня пустозвоном посчитали, даже один человек...

Ни в коем случае. Практиков видно сразу. Хотя и не верится, что за год, но значит талант, фигли тут,
я же всегда говорил что сам лоссось, ниже середнячка.

Цитата WQ ()
Но прошу не распространяться о том, что это на FB и я автор, пока это не доведено до лучшего состояния

Мне можно доверять.

Ваша прога конечно потолще любой моей, уже реализованной будет и это факт, просто не использовал сторонних
инструментов, всё пишу руками.
В личку бросать ничего не буду, напишу тут под спойлером, хоть это и оффтопик. На самом деле мой ник >Quiet Snow<
тут просто зарегистрировался через сторонний сервис, не так как хотелось бы. Мне то особо прятать нечего:

 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: