|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Можно изменить атрибут преобразования в Graphics2D контекст, чтобы переместиться, поверните, масштабируйте, и сдвиньте графические примитивы, когда они представляются. Атрибут преобразования определяется экземпляром AffineTransform class. Аффинное преобразование является преобразованием те, которые преобразовывают, вращаются, масштабируются, или сдвиг, в котором параллельные строки остаются параллельными, даже будучи преобразованным.
class обеспечивает несколько методов для того, чтобы они изменили атрибут преобразования. Можно создать новое AffineTransform и изменение Graphics2D преобразуйте атрибут, вызывая transform.
AffineTransform определяет следующие методы фабрики, чтобы облегчить создавать новые преобразования:
getRotateInstancegetScaleInstancegetShearInstancegetTranslateInstanceАльтернативно можно использовать один из Graphics2D методы преобразования, чтобы изменить текущее преобразование. Когда Вы вызываете один из этих методов удобства, получающееся преобразование связывается с текущим преобразованием и применяется во время рендеринга:
rotate — определить угол вращения в радианахscale — определить масштабный коэффициент в x и направлениях Yshear — определить фактор сдвига в x и направлениях Ytranslate — определить смещение преобразования в x и направлениях YМожно также создать AffineTransform возразите непосредственно и свяжите это с текущим преобразованием, вызывая transform метод.
drawImage метод также перегружается, чтобы позволить Вам определять AffineTransform это применяется к изображению, поскольку оно представляется. Определение преобразования, когда Вы вызываете drawImage не влияет Graphics2D преобразуйте атрибут.
Следующая программа является тем же самым как StrokeandFill, но также и позволяет пользователю выбирать преобразование, чтобы примениться к выбранному объекту, когда он представляется.
Если Вы не видите, что апплет работает, Вы должны установить .
Когда преобразование выбирается из меню 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 метод.