Другие языки программирования и технологии

написать программу которая выводит на экран оцифрованную координатную сетку!Нужно решение через Турбо Паскаль!

Доброго времени суток.

Вот кусок из рабочего проекта. Разберитесь и пользуйтесь.

program DrawGrid;
uses Crt, Graph;

const
PathToDriver = 'D:\BP\bgi'; {путь к каталогу с файлами *.bgi}
Hint = 'Esc - Exit';

var
Gd,Gm : Integer;
xMin, xMax, yMin, yMax : Real;

procedure DrawGrid(Msg: String; Grid: Boolean);
const
HorStart = 39;
HorEnd = 639;
VertStart = 25;
VertEnd = 425;
ColorGrid = DarkGray;
ColorAxes = LightRed;
ColorNum = Green;
ColorMsg = LightGray;

var
CurrentLine : Integer;
GridLine : Integer;
Digit,Point : Integer;
AnyStr : String;
GridNum : Real;
Ts : TextSettingsType;
C : Word;

begin
SetViewPort(0, 0, HorEnd, VertEnd+34, ClipOn);
GetTextSettings(Ts);
C := GetColor;
ClearViewPort;
SetColor(ColorMsg);
OutTextXY(0, VertEnd+25, Msg);
SetTextStyle(SmallFont, HorizDir, 4);

{ Draw Hor Lines }
Digit := 4;
Point := 2;
CurrentLine := VertStart;
for GridLine:=0 to 10 do begin
if GridLine = 10 then begin
SetColor(ColorAxes);
SetWriteMode(NormalPut);
end
else begin
SetColor(ColorGrid);
SetWriteMode(XORPut);
end;
if not Grid then begin
if (GridLine = 10) then Line(HorStart, CurrentLine, HorEnd, CurrentLine);
end
else Line(HorStart+1, CurrentLine, HorEnd, CurrentLine);

GridNum := yMax - (Round(yMax - yMin) * GridLine) / 10;
Str(GridNum:Digit:Point, AnyStr);

if GridNum >= 0 then Insert(' ', AnyStr, 1);
SetColor(ColorNum);
SetWriteMode(NormalPut);
OutTextXY(0, CurrentLine - 3 * TextHeight('H') div 4, AnyStr);
Inc(CurrentLine, (VertEnd - VertStart) div 10);
end;

{ Draw Vert Lines }
Digit := 4;
Point := 2;
CurrentLine := HorStart;
for GridLine:=0 to 10 do begin
if GridLine = 0 then begin
SetColor(ColorAxes);
SetWriteMode(NormalPut);
end
else begin
SetColor(ColorGrid);
SetWriteMode(XORPut);
end;
if not Grid then begin
if GridLine = 0 then Line(CurrentLine, VertStart, CurrentLine, VertEnd-1);
end
else Line(CurrentLine, VertStart, CurrentLine, VertEnd-1);
GridNum := xMin + ((Round(xMax - xMin) * GridLine) / 10);

Str(GridNum:Digit:Point, AnyStr);
if GridNum >= 0 then Insert(' ', AnyStr, 1);
SetColor(ColorNum);
SetWriteMode(NormalPut);
OutTextXY(CurrentLine-20, VertEnd+5, AnyStr);
Inc(CurrentLine, (HorEnd - HorStart) div 10);
end;
with Ts do SetTextStyle(Font, Direction, CharSize);
SetViewPort(HorStart, VertStart, HorEnd, VertEnd, ClipOn);
SetColor(C);
end;

begin
DetectGraph(Gd,Gm);
InitGraph(Gd, Gm, PathToDriver);
if GraphResult <> grOk then Halt(1);

{минимальные и максимальные значения для оцифровки}
xMin := 0; xMax := 10;
yMin := 0; yMax := 10;

DrawGrid(Hint, True);

repeat until ReadKey = #27;

CloseGraph;
end.

Удачи!
Anatoliy Bos
Anatoliy Bos
59 613
Лучший ответ

Похожие вопросы