IPB

> Setrgbpl.PAS
Чат
Форум
Загрузка...
 

Язык:
Русский
English


 { Пример программы для процедуры SetRGBPalette }

{ Первый пример иллюстрирует использование SetRGBPalette на системе
  с EGA адаптером. Второй пример показывает, как работает SetRGBPalette
  на системе с VGA адаптером }


{ Пример 1: }

uses Graph;

type RGBRec = record
  RedV   : Integer;
  GreenV : Integer;
  BlueV  : Integer;
end;
const
  EGAColors : array[0 .. MaxColors] of RGBRec =
    (                                   { имя }   { номер }
    (RedV:$00; GreenV:$00; BlueV:$00),  {Black      EGA  0}
    (RedV:$00; GreenV:$00; BlueV:$FC),  {Blue       EGA  1}
    (RedV:$24; GreenV:$FC; BlueV:$24),  {Green      EGA  2}
    (RedV:$00; GreenV:$FC; BlueV:$FC),  {Cyan       EGA  3}
    (RedV:$FC; GreenV:$14; BlueV:$14),  {Red        EGA  4}
    (RedV:$B0; GreenV:$00; BlueV:$FC),  {Magenta    EGA  5}
    (RedV:$70; GreenV:$48; BlueV:$00),  {Brown      EGA 20}
    (RedV:$C4; GreenV:$C4; BlueV:$C4),  {White      EGA  7}
    (RedV:$34; GreenV:$34; BlueV:$34),  {Gray       EGA 56}
    (RedV:$00; GreenV:$00; BlueV:$70),  {Lt Blue    EGA 57}
    (RedV:$00; GreenV:$70; BlueV:$00),  {Lt Green   EGA 58}
    (RedV:$00; GreenV:$70; BlueV:$70),  {Lt Cyan    EGA 59}
    (RedV:$70; GreenV:$00; BlueV:$00),  {Lt Red     EGA 60}
    (RedV:$70; GreenV:$00; BlueV:$70),  {Lt Magenta EGA 61}
    (RedV:$FC; GreenV:$FC; BlueV:$24),  {Yellow     EGA 62}
    (RedV:$FC; GreenV:$FC; BlueV:$FC)); {Br. White  EGA 63}

var
  Driver, Mode, I : Integer;

begin
  Driver := IBM8514;   { Отключаем автоопределение }
  Mode := IBM8514Hi;
 { Инициализация графики }
  InitGraph(Driver, Mode, 'X:\BP');
 if GraphResult < 0 then
   Halt(1);
 { Обнуляем все компоненты палитры }
 for I := 0 to MaxColors do
    SetRGBPalette(I, 0, 0, 0);
 { Изменяем первые 16 компонентов палитры 8514 }
 for I := 1 to MaxColors do
 begin
    SetColor(I);
    OutTextXY(10, I * 10, ' ..Press any key.. ');
 end;
 { Возвращаем стандартную EGA палитру }
 for I := 0 to MaxColors do
   with EGAColors[I] do
      SetRGBPalette(I, RedV, GreenV, BlueV);
 ReadLn;
  CloseGraph;
end.

{ Пример 2: }

{ Пример для SetRGBPalette для систем с VGA адаптером в
  режиме 16 цветов }


uses Graph, Crt;

type RGBRec = record
  RedV     : Integer;
  GreenV   : Integer;   { Значения интенсивности (0 .. 63) }
  BlueV    : Integer;
  Name     : String;
  ColorNum : Integer;
    { Палитра VGA, отражённая в палитре 16 цветов }
end;

{ Таблица желаемых цветов для адаптера VGA в режиме 16 цветов }
const Colors : array[0 .. MaxColors] of RGBRec = (
  (RedV:0 ;GreenV:0 ;BlueV:0 ;Name:'Black'        ;ColorNum: 0),
  (RedV:0 ;GreenV:0 ;BlueV:40;Name:'Blue'         ;ColorNum: 1),
  (RedV:0 ;GreenV:40;BlueV:0 ;Name:'Green'        ;ColorNum: 2),
  (RedV:0 ;GreenV:40;BlueV:40;Name:'Cyan'         ;ColorNum: 3),
  (RedV:40;GreenV:7 ;BlueV:7 ;Name:'Red'          ;ColorNum: 4),
  (RedV:40;GreenV:0 ;BlueV:40;Name:'Magenta'      ;ColorNum: 5),
  (RedV:40;GreenV:30;BlueV:0 ;Name:'Brown'        ;ColorNum: 20),
  (RedV:49;GreenV:49;BlueV:49;Name:'Light Gray'   ;ColorNum: 7),
  (RedV:26;GreenV:26;BlueV:26;Name:'Dark Gray'    ;ColorNum: 56),
  (RedV: 0;GreenV:0 ;BlueV:63;Name:'Light Blue'   ;ColorNum: 57),
  (RedV: 9;GreenV:63;BlueV:9 ;Name:'Light Green'  ;ColorNum: 58),
  (RedV: 0;GreenV:63;BlueV:63;Name:'Light Cyan'   ;ColorNum: 59),
  (RedV:63;GreenV:10;BlueV:10;Name:'Light Red'    ;ColorNum: 60),
  (RedV:44;GreenV:0 ;BlueV:63;Name:'Light Magenta';ColorNum: 61),
  (RedV:63;GreenV:63;BlueV:18;Name:'Yellow'       ;ColorNum: 62),
  (RedV:63;GreenV:63;BlueV:63;Name:'White'        ;ColorNum: 63));

var
  Driver, Mode, I, Error : Integer;
begin
 { Инициализируем графику }
  Driver := VGA;
  Mode := VGAHi;
  InitGraph(Driver, Mode, 'X:\BP');
  Error := GraphResult;
 if Error <> GrOk then
 begin
   WriteLn(GraphErrorMsg(Error));
   Halt(1);
 end;
  SetFillStyle(SolidFill, Green);
  Bar(0, 0, GetMaxX, GetMaxY);
 if GraphResult < 0 then
   Halt(1);
 { Обнуляем палитру }
  SetRGBPalette(Colors[0].ColorNum, 63, 63, 63);
 for I := 1 to 15 do
   with Colors[I] do
      SetRGBPalette(ColorNum, 0, 0, 0);

 { Выводим название цвета, используя сам цвет }

 { Заметьте, что с данными установками палитры, только слова "Press
   any key...", "Black", "Light Gray" и "White" являются видимыми.
   Это происходит потому, что компонент палитры номер 0 (Black)
   установлен на белый цвет. Слова "Light Gray" и "White" выводятся
   на цвете 0 в качестве фона }


  SetColor(0);
  OutTextXY(0, 10, 'Press Any Key...');
 for I := 0 to 15 do
   with Colors[I] do
   begin
      SetColor(I);
      SetFillStyle(SolidFill, (I xor 15) and 7);
     { "(I xor 15)" даёт нам цвет фона }
     { " and 7" уменьшает интенсивность фона }
      Bar(10, (I + 2) * 10 - 1, 10 + TextWidth(Name),
              (I + 2) * 10 + TextHeight(Name) - 1);
      OutTextXY(10, (I + 2) * 10, Name);
   end;
  ReadKey;

{ Восстанавливаем стандартные цвета палитры. Они могут зависеть от
  установок по умолчанию, используемых вашей видеосистемой }


 for I := 0 to 15 do
   with Colors[I] do
      SetRGBPalette(ColorNum, RedV, GreenV, BlueV);
 { Ждём нажатия на клавишу, закрываем графику и выходим }
  ReadKey;
  CloseGraph;
end.
 
 К началу страницы 
Тэги:
 

Код для вставки: :: :: :: ГОСТ ::
Поделиться: //
 



-
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"