КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Работа с фрагментами изображения
SetAspectRatio. GetAspectRatio Коэффициент сжатия. Установка цвета и стиля. Атрибуты графических фигур Функция SetFillStyle (Pattern:word; Color:word) устанавливает маску Pattern (Таблица 9) и ее цвет Color, т.е. определяет стиль заполнения. Получить информацию о задействованном стиле (о коде маски и цвета) можно с помощью процедуры GetFillSettings (var Inf: FillSettingsType). Таблица 9 Стандартные стили заполнения
aspect ratio Для определения размера памяти, необходимой для сохранения образа фрагмента служит функция ImageSize (XI, Yl, X2, Y2: Integer):Word, байт. Сохранение образа фрагмента в памяти выполняется процедурой GetImage (XI, Yl, X2, Y2: Integer; var BitMap); Параметры XI, Yl, X2, Y2 определяют прямоугольную область экрана. Процедура PutImage (X, Y:integer; var bitmap; Oper:word) -выводит из буфера на экран двоичный образ заданной области экрана. Фрагмент 7. Точка с координатами (X,Y) определяет верхний левый угол прямоугольной области экрана. Параметр BitMapявляется нетипизированным параметром, который определяет ширину и высоту области экрана. Параметр Ореr определяет способ взаимодействия вновь размещаемой копии с уже имеющимся на экране изображением. Взаимодействие осуществляется путем применения кодируемых этим параметром логических операций к каждому биту копии и изображения. Для указания применяемой логической операции можно использовать одну из следующих предварительно определенных констант. CONST CopyPut = 0; { замена существующего изображения на копию } XORPut = 1; { исключительное ИЛИ } ORPut = 2; { объединительное ИЛИ } ANDPut = 3; { логическое И } NOTPut = 4; { инверсия изображения } Наиболее часто используются операции CopyPut, XORPut, NOTPut. Первая из них просто стирает часть экрана и на это место помещает копию из памяти в том виде, как она там сохраняется. Операция NOTPut делает то же самое, но копия выводится в инверсном виде. Операция XORPut, примененная к тому же месту экрана, откуда была получена копия, сотрет эту часть экрана. Если операцию применить дважды к одному и тому же участку, вид изображения на экране не изменится. Таким способом можно перемещать изображения по экрану, создавая иллюзию движения. В примере демонстрируется использование операций сохранения и отображения области экрана с различными режимами вывода. Пример: работа с фрагментами изображения USES Graph; VAR Driver, Mode: INTEGER; Size: WORD; { размер области } X1, Y1: WORD; { координаты начальной точки } p: POINTER; { указатель на область } BEGIN Driver:=Detect; InitGraph(Driver, Mode, ''); IF GraphResult<>0 THEN HALT(1); { построение исходной фигуры } SetFillStyle(SolidFill, LightRed); PieSlice(GetMaxX div 2, GetMaxY div 2, 0, 360, 100); ReadLn; X1:= GetMaxX DIV 2 - 100; Y1:= GetMaxY DIV 2- 100; Size:=ImageSize(X1,Y1,X1+200,Y1+200); { выделение памяти для области } GetMem(p,Size); { сохранение указанной области в памяти } GetImage(X1,Y1,X1+200,Y1+200,p^); ClearDevice; SetBkColor(Blue); { отображение области в режиме копирования } PutImage(X1,Y1,p^,CopyPut); ReadLn; { отображение области в режиме XOR } { изображение удаляется с экрана } PutImage(X1,Y1,p^,XORPut); ReadLn; CloseGraph; END. Фрагмент 8. Пример использования графики: Пример программы, которая в текстовом режиме запрашивает значения десяти параметров и строит по ним столбиковую диаграмму (гистограмму) в графическом режиме. program Dem_Gra; {Построение столбиковой диаграммы} uses Crt, Graph; const Count=10; Width =40; {Ширина столбца диаграммы} var I,X1,X2,Y1,Y2: integer; M: array[1..Count]of byte; DriverVar, ModeVar: integer; S_M: string; begin Writeln('Ввод данных (целые числа) для построения диаграммы'); for I:=l to Count do begin repeat{Ввод с контролем, входит ли введенное значение в [1..10]} Write('Введите значение', I, '-го параметра (от 1 до 10):'); Readln(M[I]); if not M[I] in [1..10] {Если введенное значение не входит в интервал [1..10]} then Writeln('Значение параметра должно быть от 1 до 10'); until M[I] in [1..10]; end; DriverVar:=Detect; {Инициализация графического режима} InitGraph(DriverVar, ModeVar, ''); SetViewPort(10,10,630,400,True ); {Создать окно} SetTextStyle(DefaultFont,HorizDir,1); Yl:=325; {Построение гистограммы} for I:=l to Count do {Повторять, пока не построим все столбики} begin XI:=I*50; Str(M[I],S_M); {Преобразовать значение М[1] в строку для вывода в графическом режиме на экран} SetFillStyle(I,I); {Задать стиль и цвет заполнения} Bar3D(Xl,Yl,Xl+Width,Yl-M[I]*30,10,TopOn); {Построить столбиковую диаграмму} OutTextXY (X1+15,Y1-M[I]*3O-15,S_M); {Напечатать над столбиком значение отображаемой величины} end;{Конец цикла} {Вывод пояснительных надписей} SetTextStyle(DefaultFont,HorizDir,2); OutTextXY(150,20,'Пример гистограммы'); SetTextStyle(DefaultFont,VertDir,1); OutTextXY(40,175,'Величина параметра'); SetTextStyle(DefaultFont,HorizDir,1); OutTextXY(250,GetMaxY-140,'Параметры'); OutTextXY(150,GetMaxY-100,'Для завершения нажмите Enter'); Readln; CloseGraph; end. В результате работы программы получаем гистограмму, изображенной на Рис. 2. Подробнее – в МУ «ГРАФИКА В PASCAL-ПРОГРАММАХ». Рис. 2 ПРИЛОЖЕНИЕ
Дата добавления: 2014-01-05; Просмотров: 412; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |