Spec-Zone .ru
спецификации, руководства, описания, API
|
Можно изменить атрибут преобразования в Graphics2D
контекст, чтобы переместиться, поверните, масштабируйте, и сдвиньте графические примитивы, когда они представляются. Атрибут преобразования определяется экземпляром AffineTransform
class. Аффинное преобразование является преобразованием те, которые преобразовывают, вращаются, масштабируются, или сдвиг, в котором параллельные строки остаются параллельными, даже будучи преобразованным.
Graphics2D
AffineTransform
и изменение Graphics2D
преобразуйте атрибут, вызывая transform
.
AffineTransform
определяет следующие методы фабрики, чтобы облегчить создавать новые преобразования:
getRotateInstance
getScaleInstance
getShearInstance
getTranslateInstance
Альтернативно можно использовать один из Graphics2D
методы преобразования, чтобы изменить текущее преобразование. Когда Вы вызываете один из этих методов удобства, получающееся преобразование связывается с текущим преобразованием и применяется во время рендеринга:
rotate
— определить угол вращения в радианахscale
— определить масштабный коэффициент в x и направлениях Yshear
— определить фактор сдвига в x и направлениях Ytranslate
— определить смещение преобразования в x и направлениях YМожно также создать AffineTransform
возразите непосредственно и свяжите это с текущим преобразованием, вызывая transform
метод.
drawImage
метод также перегружается, чтобы позволить Вам определять AffineTransform
это применяется к изображению, поскольку оно представляется. Определение преобразования, когда Вы вызываете drawImage
не влияет Graphics2D
преобразуйте атрибут.
Следующая программа является тем же самым как StrokeandFill
, но также и позволяет пользователю выбирать преобразование, чтобы примениться к выбранному объекту, когда он представляется.
Если Вы не видите, что апплет работает, Вы должны установить
содержит полный код для этого апплета.Transform.java
Когда преобразование выбирается из меню Transform, преобразование связывается на AffineTransform
at
:
public void setTrans(int transIndex) { // Sets the AffineTransform. switch ( transIndex ) { case 0 : at.setToIdentity(); at.translate(w/2, h/2); break; case 1 : at.rotate(Math.toRadians(45)); break; case 2 : at.scale(0.5, 0.5); break; case 3 : at.shear(0.5, 0.0); break; } }
Прежде, чем вывести на экран форму, соответствующую пунктам меню, приложение сначала получает текущее преобразование от Graphics2D
объект:
AffineTransform saveXform = g2.getTransform();
Это преобразование будет восстановлено Graphics2D
после рендеринга.
После получения текущего преобразования, другого AffineTransform
, toCenterAt
, создается, что причины формируют, чтобы быть представленными в центре панели. at
AffineTransform
связывается на toCenterAt
:
AffineTransform toCenterAt = new AffineTransform(); toCenterAt.concatenate(at); toCenterAt.translate(-(r.width/2), -(r.height/2));
toCenterAt
преобразование связывается на Graphics2D
преобразуйте с transform
метод:
g2.transform(toCenterAt);
После того, как рендеринг завершается, исходное преобразование восстанавливается, используя setTransform
метод:
g2.setTransform(saveXform);
setTransform
метод, чтобы связать координатное преобразование на существующее преобразование. setTransform
метод перезаписывает Graphics2D
текущее преобразование объекта, которое могло бы быть необходимо по другим причинам, таким как расположение Swing и легких компонентов в окне. Используйте эти шаги, чтобы выполнить преобразования: getTransform
метод, чтобы получить текущее преобразование.transform
, translate
, scale
, shear
, или rotate
связать преобразование.setTransform
метод.