Помогите с консольной графикой
Консольная - в смысле, графика или псевдографика?
В любом случае, <conio.h>
В любом случае, <conio.h>
Да что угодно, лишь бы были картинки, где разные области окрашены в разный цвет.
йа, вроде, ужэ сказал: открываиш файл <conio.h> и четаиш. Паролельно поглядывая в MSDN.
Если тебе не очень срочно, могу привезти книжку по графике в Си. Но это не раньше понедельника.
Если тебе не очень срочно, могу привезти книжку по графике в Си. Но это не раньше понедельника.
Срочно. Но книжку привези, пожалуйста.
А как она называлась, может в инете есть.
А как она называлась, может в инете есть.
Да нет, он bmp хочет сгенерировать, не нужна ему графика в С.
На BC++ 3.1 работало.
#include<conio.h>
#include<stdio.h>
void main{
textbackground(BLACK);
textcolor(LIGHTBLUE);
cprintf("LIGHT Blue █\n\r");
getch;
}
по ходу, автору этого не надо было
Так и называлась: Построение графических приложений в языке Си - или что-то подобное. Советская книга поздних сишных времен, где-то конца 80х.
То есть? БМП тоже можно генерить, юзая эту книгу.
Ну там слова особо не нужны. Просто раскрасить квадрат. Т.е. экран поделен на сетку 800x800. Каждую клетку в зависимости от опр. числа нужно покрасить в опр. цвет. Будут в итоге нечто вроде концентрических кругов разного цвета. И желательно, чтобы этот результат сохранился где-нибудь в виду bmp-шника или чего-нибудь другого. Вот и все.
Могу рассказать как записать в tga файл.
На можешь поизучать, что я в детстве ваял
Тебе нужно читать в основном Graph/Bitmap.cpp/MBitmap::Write, но может и еще чего пригодится.
Тебе нужно читать в основном Graph/Bitmap.cpp/MBitmap::Write, но может и еще чего пригодится.Раскажи. А что это за формат.
Тебе известен какой там использовался компилятор?
Для BC++ 3.1 используетcя некий графический драйвер egavga.bgi
подключается библиотека <graphics.h>
используются функции
line(x1,y1,x2,y2)
lineto(x1,y1)
moveto(x1,y1)
putpixel(x1,y1,x2,y2)
initgraph
closegraph
Но режима 800х800 там не было и в помине.
Для BC++ 3.1 используетcя некий графический драйвер egavga.bgi
подключается библиотека <graphics.h>
используются функции
line(x1,y1,x2,y2)
lineto(x1,y1)
moveto(x1,y1)
putpixel(x1,y1,x2,y2)
initgraph
closegraph
Но режима 800х800 там не было и в помине.
Ну вот у меня установлен С++Builder 6
Это да. Типичные режимы: 320х200, 640х200, 640х480..
Не обязательно egavga.bgi. Какой режим закажешь в ИнитГраф, такой драйвер и будет. Я, например, с cga.bgi сталкивался.
В принципе, можно написать свой. Это не очень сложно, у меня даже есть такая самописная библиотека. Юзала ассемблер.
В принципе, можно написать свой. Это не очень сложно, у меня даже есть такая самописная библиотека. Юзала ассемблер.
Подожди. Я не понял, что тебе надо: вывод на экран или вывод в файл?
PS: пока вспоминал как сохранятся tga, сгенерил клевую картинку 



В файл.
Блин, мне вот такую же надо. И все. ВСЁ. Только цвета будут для каждой точки разные.
Тогда на вот тебе:
Спасибо. 

Осталось понять как она работает.
Ну как, добавляешь файлы Bitmap.C && Bitmap.h к своему проекту, а пример работы - в main.C Что там не ясно? Создаешь объект. Пераметры конструктора - ширина и высота. Для того чтобы установить точку можно например воспользоваться .setPixel( x, y, red, gree, blue ) x,y - координаты, r, g, b - цветовые компонеты. они типа float, от 0 до 1.
А если мне допустим надо восемь цветов.
И в чем проблемы?
Ну, дискретизируй, это же несложно.
Наверное я все же тупой.
Ты можешь, если не трудно написать четыре строчки:
1) Создание файла рисунка
2) Установление границ рисунка (800x800)
3) Нарисовать пиксел в точке (x,y) допустим красного цвета
4) Закрыть файл
Вот и все.
P.S. Можно ли направить вывод этих пикселей в файл типа
ofstream outfile ("picture.tga")
outfile<< something;
Ты можешь, если не трудно написать четыре строчки:
1) Создание файла рисунка
2) Установление границ рисунка (800x800)
3) Нарисовать пиксел в точке (x,y) допустим красного цвета
4) Закрыть файл
Вот и все.
P.S. Можно ли направить вывод этих пикселей в файл типа
ofstream outfile ("picture.tga")
outfile<< something;
Bitmap b( 800,800 );
b.setPixel( x, y, 1, 0, 0 );
b.writeToFile( "res.tga" );
b.setPixel( x, y, 1, 0, 0 );
b.writeToFile( "res.tga" );
Ну это нужно подключать эти два файла. А вот сами исходные команды. Чтобы короче.
Короче не получится.
Просто Builder ругается и выдает до хера ошибок.
1) Переименуй Bitmap.C в Bitmap.cpp и заново добавь его. Может builder думает что это сишный исходник...
2) Ошибки где?
2) Ошибки где?
Вроде как разобрался. А вот если мне другие увета надо, то как их вставить. Например. Оранжевый. Поиграть с коэффициентом и вместо 1 посылать другие?
почитай в гугле про rgb
Ну е-мое. Ты же можешь варьировать все цветовые составляющие. Какие проблемы-то? r = 1, g = 0.5, b = 0.
Все понял спасибо.
Правда временами эта прога вызвает переполнение стека.
Это не вина моего класса. Ты точно уверен что не пытаешься писать за пределы границ?
Да нет, вроде. Плохо, что Этот массив много памяти требует. А без него никак нельзя?
Наверное никак, если только сразу в файл не писать. Ну или можно не использовать флоаты, хотя мне так удобнее. В общем я отвечаю за этот класс. Если у тебя нет переходов за границы, то и в этом классе не будет глюков. Ищи ошибку у себя.
А как писать сразу в файл. Фактически я это у тебя и спросил несколькими постами выше. Т.е. мне эти классы ни к чему, просто просто три функции
1. Нарисовать точку (сразу в файл)
2. Открыть, закрыть файл.
И все.
1. Нарисовать точку (сразу в файл)
2. Открыть, закрыть файл.
И все.
Меня сейчас ломает. Все завтра.
Ты пока отладь алгоритм, чтобы он хоть так работал...
Ты пока отладь алгоритм, чтобы он хоть так работал...Тебе известен какой там использовался компилятор?другие режимы через другие .bgi файлы.
Для BC++ 3.1 используетcя некий графический драйвер egavga.bgi
подключается библиотека <graphics.h>
используются функции
line(x1,y1,x2,y2)
lineto(x1,y1)
moveto(x1,y1)
putpixel(x1,y1,x2,y2)
initgraph
closegraph
Но режима 800х800 там не было и в помине.
Дело в том, что во всей проге используются потоковые вводы и ввыводы, в том числе и в файл. И это конфликтует со ст. вводом-выводом.
Оставить комментарий
AndrewAAndrew
Нужно нарисовать нечто вроде окрашеных зон. Прога консольная, менять её сложно и опасно. Подскажите где можно найти описание консольной графики для тупых в С/С++. Хотелось бы чтобы изображение сохранялось в каком-нибудь, пусть самом дерьмовом формате, в файл.Ну типа операций draw (x,y, colour). Что нибудь простое и для тупых.
Нескольок сумубрно, но только от того, что тра***л шеф, а до защиты всего 20 дней. Спасите