Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.016 c
1-57779
Musket
2002-04-05 21:16
2002.04.18
Что за странная ошибка?


3-57663
Roman_Tutov@mail.ru
2002-03-28 16:29
2002.04.18
date & time trouble


1-57810
snoup
2002-04-06 21:37
2002.04.18
Как сделать, что бы при нажатии на кнопку на диске С сохранялся b


3-57581
Ninelle
2002-03-26 16:29
2002.04.18
lookup в wwdbgrid


7-57909
Lizard
2002-01-20 15:08
2002.04.18
Какой модуль необходимо подключить чтобы сработала ShellExecute(0, nil,Pchar( explorer.exe ),nil,nil,1) ?