Графические примитивы в Avenue
-
- Новоприбывший
- Сообщения: 7
- Зарегистрирован: 08 янв 2011, 18:05
- Репутация: 0
Графические примитивы в Avenue
Нужно средствами Авеню отрисовать графические примитивы, типа прямоугольников и окружностей, из центра отрисовать линии к определенным точкам и т.п. Проблема: линии рисуются, метки рисуются, окружности и прямоугольники не рисуются. Думал, что в коде ошибка какая, хотя и копипаст из методички. Спросил у знакомой, сказала, что "они рисуются, но невидимые". "Нужно поменять цвет отображения этих объектов, тогда их будет видно". Что-то не могу найти про это ничего в сети, а справка у меня не работает. Подскажите, плз, кто знает.
Gugoruwo sitte kudasai!
-
- Новоприбывший
- Сообщения: 7
- Зарегистрирован: 08 янв 2011, 18:05
- Репутация: 0
Re: Графические примитивы в Avenue
И еще, подскажите плз, как правильно создать квадрат с центром в точке нажатия мышкой? Скрипт, приведенный в методичке, почему-то рисует его со смещением относительно центра и искаженными (увеличенными) размерами. В чем фишка?
Результат
http://i019.radikal.ru/1101/d5/6787ea02203c.jpg
Задание: создать инструмент на панели инструментов, при использовании которого рисуется прямоугольник с центром в точке расположения мышки и длинами сторон, запрошенными у пользователя. Запросить у пользователя подпись к полученному объекту и координаты двух точек и провести прямые от центра квадрата к каждой точке.
Код: Выделить всё
theView=Av.GetActiveDoc
theDpy=theView.GetDisplay
theGList=theView.GetGraphics
aMousePoint=theDpy.GetMouseLoc
aPoint=aMousePoint.Clone
a=MsgBox.Input ("Введите ширину прямоугольника","Ввод параметров прямоугольника" , "")
b=MsgBox.Input ("Введите длину прямоугольника","Ввод параметров прямоугольника" , "")
aLeftPoint=Point.Make(aPoint.GetX-(a.asNumber)/2,aPoint.GetY-(b.asNumber)/2)
aRightPoint=Point.Make(aPoint.GetX+(a.asNumber)/2,aPoint.GetY+(b.asNumber)/2)
aRectangle=Rect.Make(aLeftPoint,aRightPoint)
aGRect=GraphicShape.Make(aRectangle)
theGList.Add(aGRect)
aLabel=MsgBox.Input ("Метка точки","Ввод метки" , "")
if (nil=aLabel)then
MsgBox.Warning ("Метка точки на введена.Программа остановлена","Предупреждение")
exit
else
aGLabel=graphicText.Make(aLabel,aMousePoint)
end
theGList.Add(aGLabel)
x1=MsgBox.Input ("Введите координату Х первой точки","Ввод координат первой точки" , "")
y1=MsgBox.Input ("Введите координату Y первой точки","Ввод координат первой точки" , "")
x2=MsgBox.Input ("Введите координату Х второй точки","Ввод координат второй точки" , "")
y2=MsgBox.Input ("Введите координату Y второй точки","Ввод координат второй точки" , "")
aPoint2=Point.Make(x1.AsNumber,y1.AsNumber)
aPoint3=Point.Make(x2.AsNumber,y2.AsNumber)
aLine1=Line.Make(aPoint,aPoint2)
aGLine=GraphicShape.Make(aLine1)
theGList.Add(aGLine)
aLine2=Line.Make(aPoint,aPoint3)
aGLine=GraphicShape.Make(aLine2)
theGList.Add(aGLine)
http://i019.radikal.ru/1101/d5/6787ea02203c.jpg
Gugoruwo sitte kudasai!
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Графические примитивы в Avenue
так в rect.make первая точка не aLeftPoint, а origin, а вторая не Right, а размеры
если надо из двух точек, то Rect.MakeXY используйте
Код: Выделить всё
theGList=Av.GetActiveDoc.GetGraphics
aRect = Rect.Make( 0@0, 50@100)
theGList.Add(GraphicShape.Make(aRect))
пристегивайтесь, турбулентность прямо по курсу
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 20 гостей