Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как управлять цветами в Паскале ?


Malder ©   (2002-04-04 21:27:00) 

Я понимаю, что не в тему чуть-чуть =), но просто не знаю куда обратиться - сайтов по паскалю не осталось.

Вообщем, у меня есть задача: матрица, и в каждую ее ячейку нужно ввести цвет. То есть я себе представляю это так:

Допустим, есть матрица 10X10. При запуске программы рисуется таблица 10X10 клеток. И предлагается выбрать цвет. Выбираешь, жмешь Enter, первая ячейка закрашивается выбранным цветом. Далее опять предлагается выбрать цвет, выбираешь... и вторая ячейка окрашивается. Так до тех пор пока не раскраситься вся таблица.
Как это реализовать ? Как можно рисовать в Паскале ? Желательно, как можно более простой вариант и без использование нестандартных модулей. Если кто встречался с таким - с благодарностью приму готовый код (ну или почти готовый). Вообщем, поможите чем-нибудь...

P.S. Модераторы, плиз, не удаляйте данное сообщение. Ну очень нужно.


al creator   (2002-04-05 07:51:00) [1]

В текстовом режиме 80х25 рисовать можешь спец-символами (псевдографикой)(попробуй через Alt+число(0..255) понабирать и посмотреть, что получиться, можешь через процедуру for i:=0 to 255 do write(i," = ",Chr(i);Chr-получение символа по его коду), я не помню просто, но там есть зарисованные прямоугольники (как на досовских прогресс-барах и всякая срань). Сначала можешь нарисовать своё окно на весь экран, потом пизиционировать курсор, где тебе надо и пиши обычным write определив цвет и бэкграунд-цвет - вот и всё. Код писать готовый некогда и надо ещё искать на чём - уж извини, придётся тебе самому поразбираться!


Malder   (2002-04-05 00:04:00) [2]

Спасибо, народ. Остался вопрос:

al creator © (04.04.02 21:51)
...Есть два варианта : 1) в граф режиме; 2) в текстовом...


А как рисовать в текстовом режиме ? Потому что мне важно сделать как можно проще, без возни с инцилизацией, дополнительными библиотеками (EgaVga.bgi) и т.д.


al creator   (2002-04-04 22:15:00) [3]

да, вспомнил нюанс - если хочешь, чтобы определённые настройки цвера срабатывали (те, что по умолчанию), то ClrScr или ClearDevice - пиши после них. и цвета от 0..15,blink - это точнее, а то я тебя прошлый раз тоже обманул


al creator   (2002-04-04 22:12:00) [4]

Откопал пример:
Для граф модуля:

uses crt, graph;
var GraphDriver,GraphMode:integer;
begin
GraphDriver:=detect;
InitGraph(GraphDriver,GraphMode,"");
IF GraphResult<>grOk then begin writeln("Fuck error!graph
loose");Halt(1);end;ClearDevice;SetBkColor(..);SetColor(..);
///
тут смотри что тебе писал cok
....
CloseGraph;
end.


cok   (2002-04-04 21:59:00) [5]

Ну ладно, напишу поподробнее :)
ClearViewPort-очистить окно
CloseGraph-закрыть графический режим
Line-чертит линию
LineTo-чертит линию (начиная с текущей позиции)
OutText-вывод текста
SetBkColor-цвет фона
SetColor-цвет того, что будешь рисовать
SetFillStyle-стиль закраски
SetLineStyle-стиль линии
SetTextStyle-стиль текста
...
Параметры см. в хэлпах (я думаю с этим справишься)


al creator   (2002-04-04 21:52:00) [6]

сори... цвета от 0..16


al creator   (2002-04-04 21:51:00) [7]

Прежде всего надо знать - как ты рисуешь. Есть два варианта : 1) в граф режиме; 2) в текстовом.
Если ты это делаешь в тестовом режиме (это проще - советую делать в нём - в графическом режиме надо учитывать различные режимы (EGA,VGA,SVGA и т.п.), инициализирования экрана, страницы памяти .... дофига - в текстовом меньше и проще... но это текстовый режим...)
.... блин, а я не могу вспомнить для текстового режима функции позиционирования... для граф. могу.... сейчас...
TextColor(value) = задаёт цвет текста (1..16)
TextBackGround(value) =аналогично
Window(x1,y1,x2,y2) - рисует окно с фоном определённом и текстом (настройками определёнными выше)
GotoXY(x,y) - пизиционирует курсор в координатах
Левый верхний угол экрана - 0,0
Если не ошибаюсь - ClrScr - очистка экрана
WhereX,WhereY - координаты курсора(функции)
Дальше сам копай


Ilya   (2002-04-04 21:49:00) [8]

Что бы рисовать в ТР нужно сначало иныциализировать графику, Например:

Uses Graph;
Var gd,Gm:Integer;
Begin
InitGraph(Gd,Gm,"Путь, где лежит графический драйвер, например EgaVga.bgi");


Что бы нарисовать прямоугольник можно использовать Rectangle(x1,y1,x2,y2:Integer);

Закрасить: FloodFill(x,y:Integer,Bordel:Word);

Устанавливает цвет линий: SetColor(c:Word);

Стиль закраски: SetFillStyle(pattern:Word,color:Word);


cok   (2002-04-04 21:48:00) [9]

uses graph;
...
bar,circle,rectange,...-рисуют всякую всячину (прямоугольник, круг, рамку прямоугольника).
А вообще см. хэлп в Паскале.


Наверх

Титульная страница Поиск, карта сайта Написать письмо