Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];




Вниз

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


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 определив цвет и бэкграунд-цвет - вот и всё. Код писать готовый некогда и надо ещё искать на чём - уж извини, придётся тебе самому поразбираться!




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.018 c
1-57778           Zool                  2002-04-05 16:34  2002.04.18  
_FileTime


14-57880          VuDZ                  2002-03-12 05:59  2002.04.18  
Задачка ::>


1-57773           inko                  2002-04-05 18:54  2002.04.18  
Кнопки mbYes, mbNo и др. на русском языке...


1-57685           dr_neo_rostov         2002-04-07 17:43  2002.04.18  
Update for Delphi 6


1-57816           DenKop                2002-04-05 22:52  2002.04.18  
Форма поверх всех окон.