begin
IfHeight := 20; {Высота букв} If Italic := 1; {Наклоннный шрифт} • IfUnderline :== 1; {Подчеркнутый шрифт} ifWeight := fw Bold; {Жирный шрифт} StrCopy(lfFaceName,'Arial Cyr') {Имя шрифта} end;
Font := CreateFontIndirect(LogPont); {Создаем шрифт} OldFont := SelectObject(DC,Font); {Вставляем его в
контекст окна} . SetBkMode(DC,Transparent); {Отключаем изменение
фона надписи} {Выводим надпись} DrawText(DC,'График синуса',13,R,dt_Center);
SelectObject(DC,OldFont); {Восстанавливаем контекст} DeleteObject(Font); {Уничтожаем шрифт} {Цикл построения графика и вывода таблицы значений} for k := 0 to NX do begin
{Выводим точки графика:} LineTo(DC,k*dx+dd,Round(MaxY*(1-sin(dt*k)))+dd) ;
{Формируем таблицу значений:} GotoXY(NX+5,k+l) ;
Write(dt*k:4:2,sin(dt*k):8:2) end;
ReleaseDC(CrtWindow,DC) {Освобождаем контекст} end.
Сначала несколько пояснений. Обычно Windows—окно создается в момент первого обращения программы к процедуре вывода Write/WriteLn. До этого момента окно не создано и его дескриптор недействителен. Поскольку программа вначале выводит серый фоновый прямоугольник и оси графика, ей понадобится дескриптор окна, поэтому она обращается к процедуре InitWinCrt для «досрочного» создания окна. Далее, графический вывод в Windows реализуется с помощью так называемого контекста графического устройства. Программа обращается к API— функции GetDC, чтобы Windows создала контекст окна. Стандартный контекст включает три чертежных инструмента: кисть, перо и шрифт. Кисть предназначена для закрашивания больших поверхностей, перо — для вычерчивания фигур, а шрифт — для вывода надписей.
Для вывода светлосерого прямоугольника программа обращается к Ар/функции FilIRect, передавая ей три параметра: контекст устройства, размеры прямоугольника и светло-серую кисть. Размеры прямоугольника задаются переменной R в виде координат левого верхнего и правого нижнего углов прямоугольника. Координаты указываются в пикселах экрана и отсчитываются от левого верхнего угла рабочей области окна. Чтобы указать светло-серую кисть, вызывается функция GetStockObject с