Иллюстрированный самоучитель по Java



              

Класс AffineTransform - часть 2


getRotatelnstance(double angle, double x, double у)

— такой же поворот

вокруг точки с координатами (х, у).

getScalelnstance (double sx, double sy)

— изменяет масштаб по оси Ох в sx раз, по оси Оу — в sy раз.

getSharelnstance (double shx, double shy)

— преобразует каждую точку (x, у) в точку

(x+shx*y, shy*x+y).

getTranslatelnstance (double tx, double ty)

— сдвигает каждую точку (х, у) в точку (x+tx, y+ty).

Метод createinverse () возвращает преобразование, обратное текущему преобразованию.

После создания преобразования его можно изменить методами:

setTransform(AffineTransform at)

setTransform(double a, double b, double c, double d, double e, double f)

setToIdentity()

setToRotation(double angle)

setToRotation(double angle, double x, double y)

setToScale(double sx, double sy)

setToShare(double shx, double shy)

setToTranslate(double tx, double ty)

сделав текущим преобразование, заданное одним из этих методов. 

Преобразования, заданные методами:

concatenate(AffineTransform at)

rotate(double angle)

rotate(double angle, double x, double y)

scale(double sx, double sy)

shear(double shx, double shy)

translate(double tx, double ty)

выполняются перед текущим преобразованием, образуя композицию преобразований.

Преобразование, заданное методом preconcatenate{AffineTransform at), напротив, осуществляется после текущего преобразования.

Прочие методы класса AffineTransform производят преобразования различных фигур в пространстве пользователя.

Пора привести пример. Добавим в начало метода paint о в листинге 9.2 четыре оператора, как записано в листинге 9.3.

Листинг 9.3.

Преобразование пространства пользователя

// Начало листинга 9.2...

public void paint(Graphics gr){

Graphics2D g = (Graphics2D)gr;

AffineTransform at =

AffineTransform.getRotatelnstance(-Math.PI/4.0, 250.0,150.0);

at.concatenate(

new AffineTransform(0.5, 0.0, 0.0, 0.5, 100.0, 60.0)); 

g.setTransform(at); 




Содержание  Назад  Вперед