ЦРТАЊЕ ГЕОМЕТРИСКИ ОБЈЕКТИ
Во овој дел ќе бидне објаснето креирањето на основните облици како што се точки, линии, криви, правоаголници и елипси. Неколку класи од пакетот java.awt.geom ни овозможуваат креирање на овие објекти. За рендерирање на примерите кои ќе ги цртаме ќе ја користиме класата Graphics2D. Најпрвин креираме Graphics2D објект на пример преку кастирање на Graphics параметар во некојa метод paint():
public void paint(Graphics g){
Graphics2D g2=(Graphics2D) g;
…
}
Точка
Класата Point креира точка определена со координати (x,y) во координатниот простор. Подкласите Point2D.Float и Point2D.Double обезбедуваат float и double прецизност соодветно, за зачувување на координатите на точката.
//Create Point2D.Double
Point2D.Double point = new Point2D.Double (x,y);
Дифолтниот конструктор Point2D.Double() креира точка на позиција (0,0). Со методата setLocation() можеме да ја подесиме позицијата на точката на следниот начин:
· setLocation(double x, double y) – преку дефинирање на координати како double вредности и
· setLocation(Point2D p) – за поставување на локација на точката користејќи ги координатите на друга точка p.
Исто така, класата Point2D содржи методи за пресметување на растојание од моменталната точка до некоја друга точка со дадени координати или пак растојание помеѓу две точки.
Линија
Line2D класата претставува линија во (x,y) координатен простор. Подкласите Line2D.Float и Line2D.Double специфицираат линии со float и double прецизност соодветно. На пример:
//draw Line2D.Double
g2.draw(new Line2D.Double(x1, y1, x2, y2));
Оваа класа вклучува неколку setline() методи за дефинирање на крајните точки на линијата. Крајните точки на линиите можат да бидат специфицирани и преку конструкторите, како на пример:
· Line2D.Float (float x1, float x2, float y1, float y2)
· Line2D.Float (Point2D p1, Point2D p2)
Се користи Stroke објектот од Graphics2D класата за да се дефинира линијата.
Квадратни криви
Класата QuadCurve2D го имплементира Shape интерфејсот. Оваа класа претставува квадратна параметарска крива во xy координате простор. Подкласите QuadCurve2D.Float и QuadCurve2D.Double специфицираат квадратна крива со float и double прецизност.
Неколку setCurve методи се користат за дефинирање на две крајни и една контролна точка, чии координати можат да бидат дефинирани директно или преку координати од други точки или пак со користење на дадена низа (array).
//create new QuadCurve2D.Float
QuadCurve2D q = new QuadCurve2D.Float();
//draw QuadCurve2D.Float with set coordinates
q.setCurve(x1, y1, ctrlX, ctrlY, x2, y2);
g2.draw(q);
Кубични криви
Класата CubicCurve2D исто така го имплементира Shape методот. Оваа класа дефинира кубична параметарска крива во xy координате простор. Подкласите CubicCurve2D.Float и CubicCurve2D.Double специфицираат кубична крива со float и double прецизност соодветно.
CubicCurve2D класата има слични методи со QuadCurve2D класата со таа разлика што има и втора контролна точка. На пример:
//create new CubicCurve2D.Double
CubicCurve2D q = new CubicCurve2D.Double();
//draw CubicCurve2D.Float with set coordinates
q.setCurve(x1, y1, ctrlX1, ctrlY1, ctrlX2, ctrlY2, x2, y2);
g2.draw(q);
Правоаголници
Класите преку кои се определени примитивите кои ќе ги опишеме во овој дел ја наследуваат RectangularShape класата, која пак го имплементира Shape интерфејсот и додава неколку свои методи. Со овие методи се овозможува пристап до информациите за локацијата и големината на обликот, определување на централната точка на правоаголникот и поставување граници на обликот.
Rectangle2D класата претставува правоаголник дeфиниран преку локација (x,y) и димензии m x n. Подкласите Rectangle2D.Float и Rectangle2D.Double дефинираат правоаголници со поголема прецизност. На пример:
// draw Rectangle2D.Double
g2.draw(new Rectangle2D.Double(x, y, rectwidth, rectheight));
RounfRectangle2D класата дефинира правоаголник со заоблени агли. Правоаголникот е определен со локација (x, y), димензии m x n и висина и широчина на кружните исечоци поставени на местото на темињата. Подкласите RoundRectangle2D.Fload и RoundRectangle2D.Double дефинираат заоблен правоаголник со поголема прецизност.
Методата setRoundRect(double a, double y, double w, double h, double arcWidth, double arcHeight) се користи за поставување на локацијата, големината и параметрите на заоблените темиња.
// draw RoundRectangle2D.Double
g2.draw(new RoundRectangle2D.Double(x, y, rectwidth, rectheight, 10, 10));
Елипси
Ellipse2D класата определува елипса дефинирана преку граници на правоаголник. Поголема прецизност при дефинирање на елипси даваат подкласите Ellipse2D.Float и Ellipse2D.Double. Елипса потполно е дефинирана со локација и должина и ширина. На пример:
// draw Ellipse2D.Double
g2.draw(new Ellipse2D.Double(x, y, rectwidth, rectheight));
Кружни лаци (Arcs)
За да се исцрта дел од елипса се користи класата Arc2D. Оваа класа определува лак ограничен со правоаголник, почетен агол, аголен опсег (angular extent) и тип на затворање. За поголема прецизност при дефинирањето на лаците допринесуваат подкласите Arc2D.Float и Arc2D.Double.
Arc2D класата ги дефинира следниве неколку типа на лаци претставени преку соодветните константи во класата: OPEN, PIE и CHORD.
Постојат неколку начини на сетирање на големината и параметрите на даден лак:
· Директно, преку координати
· Преку Point2D и Dimension2D
· преку копирање на веќе постоечка Arc2D
Исто така, може да се користи setArcVyCenter методата за специфицирање на лак од централна точка определена преку координати и радиус.
// draw Arc2D.Double
g2.draw(new Arc2D.Double(x, y, rectwidth, rectheight, 90, 135, Arc2D.OPEN));
|