ЗАДАНИЕ XXXVII
Тема:
Битовые карты. Цель: Ознакомиться с методами работы с битовыми картами в среде Stratum 2000. |
Для работы необходимо:
владеть основными приемами работы в системе Windows | |
владеть основными приемами работы в Stratum 2000 |
Файлы с битовыми картами
Это файлы с расширениями *.gif, *.pcx, *.tga, *.bmp, *.rle, *.jpg. Самые распространенные из них - это *.gif, *.bmp и *.jpg. Они содержат в себе прямоугольные графические изображения, которые можно загружать и редактировать. В среде Stratum для создания собственных битовых карт и редактирования существующих имеется встроенный Редактор битовых карт.
Функции для работы с битовыми картами
Битовые карты загружаются из файлов с помощью функции
CreateDIB2d. Но сразу после загрузки работать с битовой картой нельзя, так
как предварительно необходимо вставить ее как объект в графическое пространство.
Это осуществляется с помощью функции
CreateBitmap2d.
После создания битовой
карты как двумерного объекта ее можно перемещать, поворачивать и изменять
область ее видимости. Первые две операции осуществляются с помощью функций
SetObjectOrg2d и RotateObject2d. Третья -
SetBitmapSrcRect. Для того, чтобы определить текущие видимые
размеры битовой карты, используется функция
GetBitmapSrcRect.
На рисунке приведен пример видимых размеров битовой карты.
Верхняя, светлая часть - видимая, а нижняя, затемненная - невидимая. Красные
линии показывают границы видимой области.
Кроме
вышеперечисленных, существуют еще 2 функции для работы с битовыми картами:
GetDibObject2d и SetDibObject2d. Первая
позволяет определить дескриптор битовой карты, используемой заданным двумерным
объектом, а вторая - установить другую битовую карту на место прежней в заданном
объекте.
Задание
Требуется создать проект, имитирующий управление подниманием/опусканием шлагбаума.
Нарисуйте с помощью редактора битовых карт или любого другого графического редактора шлагбаум в двух состояниях: поднятом и опущенном. Второе состояние должно располагаться прямо под первым. То есть рисунок будет как бы состоять из двух равных по размеру частей, причем расположение неподвижных элементов в этих частях должно быть неизменным относительно левого и верхнего краев половинок. От того, насколько точно выполнено это условие, будет зависеть правильность работы проекта. Сохраните в файл полученный рисунок
В новом проекте создайте имидж, содержащий следующий текст:
HANDLE HSpace, HObject, HDib
FLOAT x, y, invisible
if (~HObject)
rez
:=
SetObjectOrg2d(~HSpace,~HObject,~x,~y)
rez:=SetBitmapSrcRect2d(~HSpace,~HObject,0,~SizeY
* ~faz,~SizeX,~SizeY *(1+ ~faz))
faz := 0
else
FileName :=
FileLoadDialog("","BMP|Bitmap files(*.bmp)|*.bmp|All files |*.*|","")
HDib :=
CreateDoubleDIB2d(~HSpace,~FileName)
HObject :=
CreateDoubleBitmap2d(~HSpace,~HDib,~x,~y)
SizeX :=
GetObjectWidth2d(~HSpace,~HObject)
SizeY :=
round(GetObjectHeight2d(~HSpace,~HObject)/2,0)
rez:=SetBitmapSrcRect2d(~HSpace,~HObject,0,0,~SizeX,~SizeY)
rez
:= SetObjectSize2d(~HSpace,~HObject,~SizeX,~SizeY)
endif
Вставьте в схему этого проекта имиджи LGSpace и WinButton. Соедините переменную faz созданного имиджа с переменной pressed имиджа WinButton. Запустите проект.
В появившемся окне открытия файла выберите тот, в котором содержится Ваш рисунок. На экране появится окно, а в нем - шлагбаум в одном из 2-х положений. Нажмите кнопку в этом окне. Шлагбаум должен изменить положение.
В том случае, если наблюдается изменение положения неподвижных элементов шлагбаума при нажатии кнопки, необходимо подкорректировать рисунок.