Графика под DOS в С++
Как ни странно, довольно быстрая и удобная в использовании библиотека -- BGI. Так что, если используется Borland C++ (или Turbo) или TopSpeed C++, то можно не заморачиваться, а взять её. Только надо поискать в необъятном Тырнете bgi-интерфейсы для VESA-режимов от третьих производителей, ибо в стандартной поставке Borland C++ ничего круче 16-цветного 648*480 не предусмотрено.
Так Visual C++, начиная, afair, с третьей версии, вообще под DOS код не генерит. Можно ещё поискать библиотеку DrHalo или Conner Scientific Graphics (кажется, так её звали), но они довольно старые и вряд ли поддерживают современные TrueColor режимы.
Человек под DOS просил.
А под Windows круче GDI WinAPI только DirectX API (вестимо, по скорости; по удобству IMHO круче графика в QT).
Прошу прощения. Не внимательно читал.
Брр а можно риторический вопрос? Неужели после официальной смерти линейки М$ 9х, кто-то пишет под ДОС? Зачем?
Большая просьба не флудить. Вопрос о том пишет ли сейчас кто либо под ДОС - или же нет, явно находится за пределами данной темы. Тоже самое касается рекомендаций о возможности написать библиотеку самому :)
К аффтору просьба более конкретно сформулировать вопрос - речь идет именно о приложении совместимом с DOS 3-7 версии или все таки имеется ввиду консольное приложение для линейки 2К-ХР? Т.е. обозначьте нижнюю границу. И что вы пытались использовать до того как задали вопрос на форуме?
Я имел ввиду консольное приложение. Короче надо была базы данных, только с интерфейсом как у "Norton Commander", "Far"
Я имел ввиду консольное приложение. Короче надо была базы данных, только с интерфейсом как у "Norton Commander", "Far"
Дык это немножко две большие разницы. :)
Пороюсь у себя по архивам - если найду - выложу, по памяти к сожалению не помню. Да и если порыть инет - простейшие примеры найти не проблема даже на этом сайте помоему.
Я нашёл как под дос сохранять изображение в переменную( стандартные операции с++).
{
unsigned size;
int ystart=0, yend, yincr, block;
yincr = (getmaxy()+1) / 20;
yend = yincr;
size = imagesize(0, ystart, getmaxx(), yend);
/* get byte size of image */
for (block=0; block<=19; block++)
{
if ((buf[block] = farmalloc(size)) == NULL)
{
closegraph();
printf("Error: not enough heap space in save_screen().\n");
getch();
exit(1);
}
getimage(0, ystart, getmaxx(), yend, buf[block]);
ystart = yend + 1;
yend += yincr + 1;
}
}
void restore_screen(void far *buf[20])
{
int ystart=0, yend, yincr, block;
yincr = (getmaxy()+1) / 20;
yend = yincr;
for (block=0; block<=19; block++)
{
putimage(0, ystart, buf[block], COPY_PUT);
farfree(buf[block]);
ystart = yend + 1;
yend += yincr + 1;
}
}
Но как мне записать изображение в .bmp?
//---------------------------------------------------------------
А если не разобрался как рисовать примитивы под дос так подключаешь ghraphics.h и bgi библиотеки(они должны быть в борланде или где ты там пишешь). А в встроеном хелпе о ghraphics.h можно уже узнать о всех функциях.
Описание формата Windows BMP (не путать с OS/2 BMP):
http://ru.wikipedia.org/wiki/BMP
http://edu.internet-academy.org.ge/courses/introduction_to_speciality_2/com_gr/graphics/formats/BMP_for_Windows_3.html
http://free-referat.ru/referats/komputeri_i_programi/id3392/
http://jenyay.net/index.php?id=bmp
Все ссылки об одном и том же, но разными словами.
Если хочется сохранять сжатую графику, то, имхо, надо копать в сторону PNG (но это очень долго копать надо):
http://ru.wikipedia.org/wiki/PNG
http://www.libpng.org/pub/png/
http://rus-linux.net/zen/png_feature/png_feature.html
http://emanual.ru/get/1297/
http://www.libpng.org/pub/png/vince-sabio-png-review-1.2.2.txt
http://www.libpng.org/pub/png/spec/