Текущий архив: 2002.04.18;
Скачать: CL | DM;
Вниз
Как управлять цветами в Паскале ? Найти похожие ветки
← →
Malder (2002-04-04 21:27) [0]Я понимаю, что не в тему чуть-чуть =), но просто не знаю куда обратиться - сайтов по паскалю не осталось.
Вообщем, у меня есть задача: матрица, и в каждую ее ячейку нужно ввести цвет. То есть я себе представляю это так:
Допустим, есть матрица 10X10. При запуске программы рисуется таблица 10X10 клеток. И предлагается выбрать цвет. Выбираешь, жмешь Enter, первая ячейка закрашивается выбранным цветом. Далее опять предлагается выбрать цвет, выбираешь... и вторая ячейка окрашивается. Так до тех пор пока не раскраситься вся таблица.
Как это реализовать ? Как можно рисовать в Паскале ? Желательно, как можно более простой вариант и без использование нестандартных модулей. Если кто встречался с таким - с благодарностью приму готовый код (ну или почти готовый). Вообщем, поможите чем-нибудь...
P.S. Модераторы, плиз, не удаляйте данное сообщение. Ну очень нужно.
← →
cok (2002-04-04 21:48) [1]uses graph;
...
bar,circle,rectange,...-рисуют всякую всячину (прямоугольник, круг, рамку прямоугольника).
А вообще см. хэлп в Паскале.
← →
Ilya (2002-04-04 21:49) [2]Что бы рисовать в ТР нужно сначало иныциализировать графику, Например:
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);
← →
al creator (2002-04-04 21:51) [3]Прежде всего надо знать - как ты рисуешь. Есть два варианта : 1) в граф режиме; 2) в текстовом.
Если ты это делаешь в тестовом режиме (это проще - советую делать в нём - в графическом режиме надо учитывать различные режимы (EGA,VGA,SVGA и т.п.), инициализирования экрана, страницы памяти .... дофига - в текстовом меньше и проще... но это текстовый режим...)
.... блин, а я не могу вспомнить для текстового режима функции позиционирования... для граф. могу.... сейчас...
TextColor(value) = задаёт цвет текста (1..16)
TextBackGround(value) =аналогично
Window(x1,y1,x2,y2) - рисует окно с фоном определённом и текстом (настройками определёнными выше)
GotoXY(x,y) - пизиционирует курсор в координатах
Левый верхний угол экрана - 0,0
Если не ошибаюсь - ClrScr - очистка экрана
WhereX,WhereY - координаты курсора(функции)
Дальше сам копай
← →
al creator (2002-04-04 21:52) [4]сори... цвета от 0..16
← →
cok (2002-04-04 21:59) [5]Ну ладно, напишу поподробнее :)
ClearViewPort-очистить окно
CloseGraph-закрыть графический режим
Line-чертит линию
LineTo-чертит линию (начиная с текущей позиции)
OutText-вывод текста
SetBkColor-цвет фона
SetColor-цвет того, что будешь рисовать
SetFillStyle-стиль закраски
SetLineStyle-стиль линии
SetTextStyle-стиль текста
...
Параметры см. в хэлпах (я думаю с этим справишься)
← →
al creator (2002-04-04 22:12) [6]Откопал пример:
Для граф модуля:
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.
← →
al creator (2002-04-04 22:15) [7]да, вспомнил нюанс - если хочешь, чтобы определённые настройки цвера срабатывали (те, что по умолчанию), то ClrScr или ClearDevice - пиши после них. и цвета от 0..15,blink - это точнее, а то я тебя прошлый раз тоже обманул
← →
Malder (2002-04-05 00:04) [8]Спасибо, народ. Остался вопрос:
al creator © (04.04.02 21:51)
...Есть два варианта : 1) в граф режиме; 2) в текстовом...
А как рисовать в текстовом режиме ? Потому что мне важно сделать как можно проще, без возни с инцилизацией, дополнительными библиотеками (EgaVga.bgi) и т.д.
← →
al creator (2002-04-05 07:51) [9]В текстовом режиме 80х25 рисовать можешь спец-символами (псевдографикой)(попробуй через Alt+число(0..255) понабирать и посмотреть, что получиться, можешь через процедуру for i:=0 to 255 do write(i," = ",Chr(i);Chr-получение символа по его коду), я не помню просто, но там есть зарисованные прямоугольники (как на досовских прогресс-барах и всякая срань). Сначала можешь нарисовать своё окно на весь экран, потом пизиционировать курсор, где тебе надо и пиши обычным write определив цвет и бэкграунд-цвет - вот и всё. Код писать готовый некогда и надо ещё искать на чём - уж извини, придётся тебе самому поразбираться!
Страницы: 1 вся ветка
Текущий архив: 2002.04.18;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.005 c