Практика программирования (Бейсик, Си, Паскаль)



         

Отрезки прямых и прямоугольники - часть 2


  • linerel(dx,dy); — соединение СР отрезком с точкой (cp.x+dx,cp.y+dy);

  • line(x1,y1,x2,y2); — соединение отрезком точек (xi,yi) и (х2,у2);

  • rectangle (xl, yl,x2, у2); — построение контура прямоугольника;

  • bar (x1,y1,x2,y2); — построение залитого прямоугольника без обводки границ;

  • bar3d(x1,y1,x2,y2,d,b); — построение параллелепипеда.

    Перемещение СР (moveto, moverel) не оставляет следов на экране, иными словами — проводится невидимый отрезок. Это необходимо для перехода к очередной несвязной фигуре. Может показаться странным, что в QBasic в явном виде нет аналогичных операций. На самом деле, это не совсем так. Перевод СР в точку с заданными координатами (х,у) или смещение ее по известным приращениям без построения видимого отрезка осуществляется с помощью оператора PRESET:

    PRESET (x,y) ИЛИ PRESET STEP(dx,dy)

    Однако, если до этого точка с координатами (х,у) была окрашена в цвет, отличный от цвета фона, то после оператора PRESET она будет перекрашена. Чтобы не затереть прежний цвет точки (х,у), можно предварительно опросить ее код цвета, а потом повторить его в одном из операторов PSET или

    PRESET:

    col=P0INT(x,y) : PSET (x,y),col

    или

    PSET (х, у), P0INT (х, у)

    После построения видимых отрезков СР перемещается в конец отрезка. Построение прямоугольника также переводит СР в точку с координатами (х2,y2).

    BGI-пакет располагает точно такой же возможностью по управлению видимостью пикселов линии с помощью 16-битовой маски. Но функция setiinestyle, определяющая стиль линии, несколько удобнее:

    setlinestyle(style,mask,t);

    Первый ее аргумент позволяет установить одну из нескольких заранее подготовленных системных масок, не перелагая на пользователя подбор соответствующего двоичного кода. Аргумент style — целое число из диапазона [0,4], которое удобно задавать в виде мнемонической константы:

    ТС: S0LID_LINE TP: SolidLn 0 — сплошная линия

    D0TTED__LINE DottedLn 1 — пунктирная линия

    CENTER_LINE CenterLn 2 — штрих-пунктирная линия

    DASHED_LINE DashedLn 3 — штриховая линия




    Содержание  Назад  Вперед