Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/78: Рейтинг темы: голосов - 78, средняя оценка - 4.86
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443

Изучение основ FreeBasic в сравнении с PowerBasic

10.10.2022, 22:17. Показов 21970. Ответов 218

Студворк — интернет-сервис помощи студентам
Всем добра и мира!

К сожалению, PowerBasic прекратил своё развитие вследствие смерти его создателя и главного (а скорее всего, единственного) разработчика Роберта Зейла в 2012-ом году. К настоящему времени последние надежды на его развитие окончательно угасли. В связи с этим я решил приступить к изучению основ FreeBasic'а.

В этой ветке форума буду задавать вопросы, возникающие у меня в процессе ознакомления с этим ЯП.

Как говорится, всё познаётся в сравнении. Ну вот и буду изучать FreeBasic, опираясь на определённый опыт ЛЮБИТЕЛЬСКОГО программирования на PowerBasic'е.

Буду очень благодарен за любую помощь.

Итак, первый возникший у меня вопрос.

Каким образом в структурах FreeBasic'а появилась возможность использовать динамические строки?
В PowerBasic'е это строго запрещено. Можно использовать только строки фиксированной длины.

Вот 2 работающих (с одним и тем же результатом на консоли) кода для сравнения:

FreeBasic
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TYPE Persons
    Name AS STRING
    Surname AS STRING
    Age AS BYTE = 35
END TYPE
 
DIM Vpersons AS Persons
 
Vpersons.Name="Richard"
Vpersons.Surname="Black"
 
? Vpersons.Name
? Vpersons.Surname
? Vpersons.Age
Sleep
PowerBasic
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#COMPILE EXE
#DIM ALL
 
TYPE Persons
  Name AS STRING*10       'если здесь написать "Name AS STRING", компилятор бастует
  Surname AS STRING*10   'если здесь написать "Surname AS STRING", компилятор бастует
  Age AS BYTE           'значение по умолчанию здесь присвоить не получится
END TYPE
 
FUNCTION PBMAIN () AS LONG
DIM Vpersons AS Persons
 
  Vpersons.Name="Richard"
  Vpersons.Surname="Black"
  Vpersons.Age = 35
 
  ? Vpersons.Name
  ? Vpersons.Surname
  ? Vpersons.Age
 
  SLEEP 5000    'если SLEEP без указания продолжительности, компилятор бастует
END FUNCTION
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2022, 22:17
Ответы с готовыми решениями:

Перегрузка методов (изучение основ)
Добрый день! Вот я добрался до перегрузки методов и быстренько накидал вот такой пример: using System; namespace...

Сколько в среднем часов уходит на изучение основ C++?
1) Если с нуля 2) Если после паскаля или чего то в этом духе

Групповое изучение программирование с основ без преподавателя
Суть: Студенты 3 курса Специальность: информационно вычислительная техника, после третьего курса "Аналитики" С с божьей...

218
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
12.11.2022, 12:57
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Power_Basic Посмотреть сообщение
Это как бы намёк на то, что силами PowerBasic'а, вынужденно прекратившего своё развитие ровно 10 лет назад (в связи с безвременной кончиной Боба Зейла) эту задачу решить не получться?
Это значит, что развитие его прекратилось 10 лет назад и больше НИКОГДА не возобновится, за отсутствием исходников проекта. Всё, точка. Можете забыть. Боба больше заботило собственное благополучие, чем вклад в индустрию. Если бы это была открытая система, на бы продолжала жить, но она закрыта..
Цитата Сообщение от Power_Basic Посмотреть сообщение
Доказательство прилагаю. И обратите внимание, в исходнике нет ни одного инклюда!
Всё выполнено с помощью только встроенных средств самого языка.
Причем здесь это? А если завтра изменится архитектура процессора или надо будет сделать поддержку какого-то процессора, или подстроить компилятор под новую ось? Что делать? Вот и все, приплыли, сушите весла.. Это уже мусор, хлам, раритет если хотите.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,009
Записей в блоге: 7
12.11.2022, 13:08
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А если завтра изменится архитектура процессора или надо будет сделать поддержку какого-то процессора, или подстроить компилятор под новую ось?
А причем здесь подключаемые файлы?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Это уже мусор, хлам, раритет если хотите.
VB давно не поддерживается но его продолжают использовать https://www.cyberforum.ru/visual-basic/
И это при том что в нем нет поддержки x64 не говоря про друие платформы кроме винды.
QB тоже используют, несмотря то что времена DOS давно прошли.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
12.11.2022, 14:43
Цитата Сообщение от locm Посмотреть сообщение
QB тоже используют, несмотря то что времена DOS давно прошли.
Придется запускать все это под эмулятором и забыть об продакшене.
Цитата Сообщение от locm Посмотреть сообщение
VB давно не поддерживается но его продолжают использовать
Это очень смешно. Продукт создавался чисто под win 98, и даже под xp встает криво либо вообще не встает. Сам пробовал и бросил эту затею. А те кто до сих пор "пиарит" сей неплохой, хотя отживший свое время продукт, по моему, занимаются чистым мазохизмом и набирают себе сторонников, чтобы вместе не было так скучно им заниматься на новых осях.
Цитата Сообщение от locm Посмотреть сообщение
причем здесь подключаемые файлы?
Не понял причем здесь они, если речь вроде шла о дальнейшем развитии языка?
Что касается инклюдов. На мой взгляд для расширяемости языка неплохо иметь такую возможность. Штатные средства - это хорошо, но не все можно предусмотреть на этапе проектирования языка, всегда что-то упустишь. А подключаемые либы позволяют это обойти.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,009
Записей в блоге: 7
12.11.2022, 14:49
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Не понял причем здесь они
Вот и я не понял зачем вы так отвечали процитировал текст
И обратите внимание, в исходнике нет ни одного инклюда!
Всё выполнено с помощью только встроенных средств самого языка.
Изучение основ FreeBasic в сравнении с PowerBasic
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
12.11.2022, 15:42
Цитата Сообщение от locm Посмотреть сообщение
Вот и я не понял зачем вы так отвечали процитировал текст
Не обратил внимания.
0
1401 / 860 / 92
Регистрация: 08.02.2017
Сообщений: 3,668
Записей в блоге: 2
12.11.2022, 16:12
Цитата Сообщение от CoderHuligan Посмотреть сообщение
VB давно не поддерживается но его продолжают использовать
Это очень смешно. Продукт создавался чисто под win 98, и даже под xp встает криво либо вообще не встает.
Я скажу почему. VB это сейчас прежде всего VBA который еть почти на каждом ПК с OS Windows и установленным MS Office. Достаточно открыть Excel и нажать Alt+F11. Либо даже без MS Office - VBS - урезанный вариант VB. Аудитория огромная и никогда не закончится. Открываешь интернет - по любому вопросу все расписано. Идеальные условия для новичка. VBA - это практически тот же VB, какие-то простые коды можно стянуть с раздела VB.NET. Если говорить о скорости, VBA быстрее голого Питона. В какой-то из статей 5годичной давности VB6 обошел C++ в каком-то простом однопоточном алгоритме, это был конечно частный случай. В этом плане, да и в целом интересен конечно Free Basic, если его не много ни мало тут сравнивают с легендарным Си и то что он Бейсик, и если он легко конвертируем с VB вообще прекрасно )
1
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
12.11.2022, 16:36  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Сортировка есть https://www.purebasic.com/docu... index.html
И это правильно. С моей точки зрения, в каждом уважающем себя ЯП должна быть встроенная возможность сортировки массивов, равно как и других базовых функций.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Цитата Сообщение от Power_Basic Посмотреть сообщение
нечто "левое", нечто стороннее, нечто встраиваемое
Противоречие: встраиваемое не может быть сторонним.
На самом деле, следовало бы написать "вставляемое", но "встраиваемое" показалось мне более благозвучным
Подразумевалось что-то вроде софтовых плагинов или нечто вроде плат расширения, вставляемых/встраиваемых в материнку.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Цитата Сообщение от Power_Basic Посмотреть сообщение
откуда мне знать, что в какой искать
Обычно все вещи уже давно написаны и реализованы в какой‐нибудь библиотеке. Осталось правильно сформировать запрос и отправить поисковой системе.
https://www.gunsmoker.ru/2013/... 3527040567
Ну это же WinAPI. При чём здесь тогда сам FreeBasic? Как мне представляется, для использования WinAPI сгодится любой ЯП, ну или почти любой.

Но вы мне этим советом подсказали, как искать в библиотеках, предназначенных именно для FreeBasic'а. И да, это работает.
Попробовал сейчас поиск "array NEAR sort" в WinFBX (https://github.com/JoseRoca/WinFBX), и нашлась именно предложенная вами функция (см. скриншот).

Цитата Сообщение от Замабувараев Посмотреть сообщение
Чтобы пользоваться функциями из библиотеки языка си не нужно изучать язык си.
Открою секрет: для компилятора нет никакой разницы между вызовом си‐функции и функции из винапи или написанной вами функции, или функции из библиотеки фрибесика. Компилятор просто ставит вызов функции и отправляет ей параметры в установленном порядке. Больше его ничего не заботит и заботить не должно. Вообще, дискриминация и уничижение функций по происхождению очень свойственна людям, однако компилятор лишён таких экзистенциальных размышлений и психологических переживаний вроде «эта функция плохая, потому что она нестандартная», «эта функция написана на другом языке программирования, фу-фу-фу» или «вызов функции из чуждого мне языка сделает мой исходный код менее бейсиковым». Потому что на уровне процессора любая функция работает одинаково.
Да это всё понятно, и нет никакого "фу-фу-фу" с моей стороны. Нативный код он и в Африке нативный код

Цитата Сообщение от Замабувараев Посмотреть сообщение
Цитата Сообщение от Power_Basic Посмотреть сообщение
Я уж тогда лучше простым пузырьковым методом из каменного века массив отсортирую
Чем вам не понравился тот пример с сортировкой структур? Не работает?
А я его и не пробовал. Вполне возможно, что работает
Вы поймите, я сейчас в первом классе, а вы мне предлагаете задачки из высшей математики
Вот я где сейчас: https://users.freebasic-portal... tbook.html.
Мы там про вызовы сишных функций пока ещё не проходили
И поэтому я принципиально не хочу забегать вперёд, чтобы не запутаться.
Кстати, Станислав там великолепно учебный материал излагает, надо отдать ему должное.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Не нужно выдумывать свою терминологию, можно использовать общепринятую.
А я её забываю
Вы поймите, программирование это лишь одно из моих многочисленных хобби. Я могу годами "не подходить к роялю"
Согласитесь, сложно в такой ситуации всегда следовать точной терминологии.
Вот сейчас "пошла волна" в этом направлении, ну вот я и снова постепенно "вживаюсь в тему".

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Причем здесь это? А если завтра изменится архитектура процессора или надо будет сделать поддержку какого-то процессора, или подстроить компилятор под новую ось? Что делать? Вот и все, приплыли, сушите весла.. Это уже мусор, хлам, раритет если хотите.
Для моих непрофессиональных целей этого хлама вполне достаточно.

Ну просто мне пришла блажь в голову, что не худо бы иметь возможность программировать под х64, ну вот я и выбираю дополнительный (не основной!) язык. А понадобятся ли мне когда-нибудь эти самые х64? Вопрос открытый.
Миниатюры
Изучение основ FreeBasic в сравнении с PowerBasic  
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
12.11.2022, 17:06  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Библиотеку функций делают программисты. Они не включили в стандартную библиотеку функцию сортировки потому что:
а) им лень или некогда;
б) функция сортировки уже есть в сишной библиотеке, и дублировать её незачем.
Мне сейчас пришло в голову, что с таким подходом можно изобрести такой ЯП, который вообще ни на что не будет способен кроме идеального вызова сторонних функций
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,009
Записей в блоге: 7
12.11.2022, 17:08
Цитата Сообщение от testuser2 Посмотреть сообщение
В этом плане, да и в целом интересен конечно Free Basic, если его не много ни мало тут сравнивают с легендарным Си и то что он Бейсик
Не сказал бы что интересно когда бейсик такой же хардкорный как Си...
Бейсик интересен прежде всего своей простотой, а в FreeBasic с этим есть некоторые сложности и этим он похож на Си.

Цитата Сообщение от testuser2 Посмотреть сообщение
если он легко конвертируем с VB вообще прекрасно
Есть совместимость с QB. С VB нет, насколько мне известно. То есть нельзя любой код на VB не внося в него изменений скомпилировать в FB.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Вы поймите, я сейчас в первом классе, а вы мне предлагаете задачки из высшей математики
У вас ведь есть опыт программирования на PowerBasic?
Тогда это не первый класс. Функция qsort не сложна для понимания. Принцип ее работы понятен из примера без чтения документации. https://cpp.com.ru/shildt_spr_po_c/18/qsort.html
2
1401 / 860 / 92
Регистрация: 08.02.2017
Сообщений: 3,668
Записей в блоге: 2
12.11.2022, 17:33
Цитата Сообщение от locm Посмотреть сообщение
Не сказал бы что интересно когда бейсик такой же хардкорный как Си...
Интересно в том плане, что может быть можно написать что-то мощно-быстрое в привычном синтаксисе и может быть чуть больше приблизиться к пониманию основ.
Цитата Сообщение от Power_Basic Посмотреть сообщение
И это правильно. С моей точки зрения, в каждом уважающем себя ЯП должна быть встроенная возможность сортировки массивов, равно как и других базовых функций.
В VB этого нет, и даже qsort можно заюзать с помощью ряда выкрутасов. Впрочем для большинства задачь вполне хватает самописных функций, которых без труда можно найти. На VBA даже многие такие функции по скорости быстрее тех, что предоставляет объектная модель VBA Excel.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
12.11.2022, 17:34
Цитата Сообщение от testuser2 Посмотреть сообщение
VB это сейчас прежде всего VBA
Майкры вообще прекратили развивать эти свои прошлые продукты, в частности бейсик. Это все уже не поддерживается. На старых ОС можно всем этим заниматься.
Цитата Сообщение от testuser2 Посмотреть сообщение
В этом плане, да и в целом интересен конечно Free Basic, если его не много ни мало тут сравнивают с легендарным Си и то что он Бейсик, и если он легко конвертируем с VB вообще прекрасно )
Free basic мне показался очень похожим на си, что неприятно удивило.
Цитата Сообщение от Power_Basic Посмотреть сообщение
Для моих непрофессиональных целей этого хлама вполне достаточно.
Тогда понятно. Если делать для других, надо применять современные решения.
Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну это же WinAPI. При чём здесь тогда сам FreeBasic? Как мне представляется, для использования WinAPI сгодится любой ЯП, ну или почти любой.
Потому что FreeBasic это видоизмененный си. И на нем придется программировать под win api, а это уже почти никто не делает, за исключением тех, у кого уйма свободного времени. Или надо подключать сторонние либы, которые упрощают программирование под окошки.
1
1401 / 860 / 92
Регистрация: 08.02.2017
Сообщений: 3,668
Записей в блоге: 2
12.11.2022, 18:04
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Майкры вообще прекратили развивать эти свои прошлые продукты, в частности бейсик. Это все уже не поддерживается. На старых ОС можно всем этим заниматься.
Для многих задач абсолютно достаточен этот старый движек. Прикольнее конечно было если были бы потоки и побытрее доступ к объектам. Недавно было обсуждение, vba оказался даже быстрее SQL при фильтрации массива.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
12.11.2022, 18:30
Единственное, что хорошо в Free basic это встроенная графическая библиотека и динамические строки. Однако меня лично не удовлетворяет скорость графики. Также в экранах нет поддержки русского алфавита. Ну а строки реализованы несколько тупо, так как там выделяется память каждый раз столько сколько требуется, но это неправильно с точки зрения её фрагментации. Надо в 2 раза больше или через степень двойки. Короче проект для атомной станции на free basic я бы писать не стал.
Если бы удалось улучшить графику и строки, добавить поддержку других adt, нативные функции для обработки массивов, то язык бы стал вполне нормальным.
1
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
12.11.2022, 20:23
Цитата Сообщение от Power_Basic Посмотреть сообщение
Мы там про вызовы сишных функций пока ещё не проходили
Вам следует перестать мыслить в категориях «сишная функция», «фрибейсиковая функция», «винапишная функция».
У вас должна быть только одна категория — «функция». Функция как независимый участок кода, который принимает параметры и возвращает результат.
Я вам открою секрет: фрибейсиковая функция InStr — она на самом деле на си написана, в вашей терминологии — это сишная функция. Вас это сильно расстроит? Или как‐то усложнит вам жизнь? Или после этого вам стало труднее писать название этой функции в редакторе и очень сложно ставить скобки и указывать внутри параметры?
Цитата Сообщение от Power_Basic Посмотреть сообщение
Мне сейчас пришло в голову, что с таким подходом можно изобрести такой ЯП, который вообще ни на что не будет способен кроме идеального вызова сторонних функций
Это язык называется Си.
Цитата Сообщение от Power_Basic Посмотреть сообщение
С моей точки зрения, в каждом уважающем себя ЯП должна быть встроенная возможность сортировки массивов, равно как и других базовых функций.
Си не имеет встроенных функций. Си — это несерьёзный и неуважающий себя язык?
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Единственное, что хорошо в Free basic это встроенная графическая библиотека
Извините, но нет.
Эта графическая библиотека только и умеет, что рисовать линии, прямоугольники и овалы.
Графика в стиле QBASIC устарела уже тогда, когда вышла Windows 3.11 со своим интерфейсом GDI (1990 год), в котором поддерживаются кисти, перья, регионы, картинки, шрифты, сплайны, кривые Безье, трансформация координат и аффинные преобразования через матрицы.

Добавлено через 20 минут
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ну а строки реализованы несколько тупо, так как там выделяется память каждый раз столько сколько требуется, но это неправильно с точки зрения её фрагментации.
Вот именно поэтому никаких встроенных функций в серьёзном языке нет.
Потому что в лабораторных работах первого семестра какие‐нибудь встроенные строки или сортировки будут работать.
А когда появится серьёзный проект, где важна скорость и память, вам придётся выкинуть стандартную реализацию. И программисты работали вхолостую, потому что никто ихнюю стандартную реализацию не использует.
2
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
13.11.2022, 11:41
Цитата Сообщение от Замабувараев Посмотреть сообщение
Эта графическая библиотека только и умеет, что рисовать линии, прямоугольники и овалы.
И этого вполне хватило чтобы создать сотни игр именно на этой библиотеке. А для учебных целей лучшего решения не найти.
Цитата Сообщение от Замабувараев Посмотреть сообщение
в котором поддерживаются кисти, перья, регионы, картинки, шрифты, сплайны, кривые Безье, трансформация координат и аффинные преобразования через матрицы.
А это все можно сделать расширив стандартную библиотеку. На уровне приложения.
Цитата Сообщение от Замабувараев Посмотреть сообщение
Вот именно поэтому никаких встроенных функций в серьёзном языке нет.
Значит PHP с Python это несерьезные языки? Там куча встроенных функций. А как иначе работать с динамическими ADT? Даже списки требуют своих сервисных функций, а если списки встроены в язык, то естественно они тянут и сервис-функции. Да и штатные средства всегда должны быть под рукой, потому что редко требуется нечто другое - более быстрое, или менее затратное по памяти и т.п. Обычно хватает штатных средств.
Цитата Сообщение от Замабувараев Посмотреть сообщение
А когда появится серьёзный проект, где важна скорость и память, вам придётся выкинуть стандартную реализацию.
Не выкинуть, а заменить её нечто своим. Но высокоуровневые языки редко это позволяют делать..
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
13.11.2022, 13:41
Цитата Сообщение от CoderHuligan Посмотреть сообщение
И этого вполне хватило чтобы создать сотни игр именно на этой библиотеке.
Для 1980‐ых.
Но сейчас времена 640x480 и 16 цветов давно прошли. Или вы собираетесь писать графику для эмуляторов DOS? В 2022 году?
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А для учебных целей лучшего решения не найти.
Годится только чтобы рисовать дом с трубой.
А потом придя на работу услышать фразу «забудьте всё, чему вас учили в школе». И ценность функций рисования прямоугольников и овалов стала равна нулю.

Хорошо, простой вопрос. Как с помощью этих функций нарисовать эллипс под углом? Чтобы получилось примерно такое:

Вы будете руками множество точек эллипса вычислять? А ведь достаточно установить матрицу перехода:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Sub SetCartesian(ByVal hDC As HDC, ClientWidth As Long, ClientHeight As Long)
    Dim cxOrig As Long = ClientWidth \ 2
    Dim cyOrig As Long = ClientHeight \ 2
    Dim AntiHeight As Long = -1 * ClientHeight
    
    SetMapMode(hDC, MM_ISOTROPIC)
    SetWindowExtEx(hDC, ClientWidth, ClientHeight, NULL)
    SetViewportExtEx(hDC, ClientWidth, AntiHeight, NULL)
    SetViewportOrgEx(hDC, cxOrig, cyOrig, NULL)
End Sub
 
Sub OnPaint(ByVal hWin As HWND, ByVal hDC As HDC, ByVal prcPaint As RECT Ptr)
    
    SetGraphicsMode(hDC, GM_ADVANCED)
    
    Dim rcClient As RECT = Any
    GetClientRect(hWin, @rcClient)
    Dim ClientWidth As Long = rcClient.right
    Dim ClientHeight As Long = rcClient.bottom
    
    SetCartesian(hDC, ClientWidth, ClientHeight)
    
    ' Матрица поворота с масштабированием
    Dim Matrix2D As XFORM = Any
    Matrix2D.eM11 = 0.865999997
    Matrix2D.eM12 = 0.5
    Matrix2D.eM21 = -0.25
    Matrix2D.eM22 = 0.432999998
    Matrix2D.eDx = 0.0
    Matrix2D.eDy = 0.0
    ModifyWorldTransform(hDC, @Matrix2D, MWT_LEFTMULTIPLY)
    
    Dim WidthHeightMin As Long = min(ClientWidth \ 2, ClientHeight \ 2)
    
    For radius As Integer = WidthHeightMin To 20 Step -20
        Dim nLeft As Long = -1 * radius
        Dim nTop As Long = -1 * radius
        Dim nRight As Long = radius
        Dim nBottom As Long = radius
        
        Ellipse(hDC, nLeft, nTop, nRight, nBottom)
    Next
    
    ModifyWorldTransform(hDC, NULL, MWT_IDENTITY)
    
    MoveToEx(hDC, 0, -1 * ClientHeight, NULL)
    LineTo(hDC, 0, ClientHeight)
    MoveToEx(hDC, -1 * ClientWidth, 0, NULL)
    LineTo(hDC, ClientWidth, 0)
    
End Sub
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
13.11.2022, 13:45
Цитата Сообщение от Замабувараев Посмотреть сообщение
Но сейчас времена 640x480 и 16 цветов давно прошли.
В данной библе можно и большее разрешение устанавливать и экран любой назначить.. Под современные оси писалось же, не под дос.
Цитата Сообщение от Замабувараев Посмотреть сообщение
Годится только чтобы рисовать дом с трубой.
Можно спрайты выводить. Зайдите на сайт Будинова Стаса и посмотрите примеры стандартной графики и её возможности. Многие заблуждения просто отпадут.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
13.11.2022, 13:58
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Можно спрайты выводить
Ну да, можно все картинки в фотошопе сделать и их выводить когда надо.
И тогда останется одна функция DrawImage, остальные можно выкидывать за ненадобностью.
Только вот графическая библиотека из одной функции — это точно то что надо?
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,009
Записей в блоге: 7
13.11.2022, 14:25
Цитата Сообщение от Замабувараев Посмотреть сообщение
А ведь достаточно установить матрицу перехода
Не запускается под линуксом, не подскажите почему?
Встроенная графическая библиотека работает.
Программирование на WinAPI не только требует больше времени и сил, но и не кроссплатформенно!
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
13.11.2022, 14:49
Замабувараев, - смысл basic именно в готовых встроенных средствах - графики из коробки, управление памятью + возможность по ручной оптимизации, то есть возможность иметь доступ к памяти напрямую посредством указателей. Ну и в отсутствии определенной парадигмы. Если он это не обеспечивает, то это не basic. Вопросы об эффективности реализации данных возможностей, это уже вопрос другой.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2022, 14:49

Лабораторная работа на изучение основ работы с debug.exe
Ход работы 1. Запишите в отчет тему и цель. 2. В командной строке наберите debug. У вас должно появиться на экране окно отладчика с...

Лабораторная работа(Изучение основ.Одномерный и двумерный массивы.Процессы)
Ребята, помогите с задачами, дали написать задачи на VBA (ни разу с ним не имел дела), первые 3 задачи делал на python'e может быть Вы...

Проблема с Imagelist в PowerBasic 10
Я хочу в ресурс вставить одно растровое изображение. Затем с помощью графических команд вырезать кусочки в память и добавлять их в...

FreeBASIC
Заметил, что уже имеющиеся на форуме темы в разделах: - QBasic - Visual Basic - VBA - Pure Basic посещаются довольно часто –...

Уйти с freebasic
написал кое как программу с openCL на freebasic там моделируется взfвимодействие частиц через потенциал парного взаимодейстивия ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
28. КОнкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий? Да, такие данные есть, и они хорошо описаны и в российской,. . .
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энрегоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерировавны.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2. Задача: контроль уникальности строк в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru