|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Любой Shape объект может использоваться в качестве траектории отсечения, которая ограничивает часть области рисунка, которая будет представлена. Траектория отсечения является частью контекст; чтобы установить атрибут клипа, Вы вызываете Graphics2D.setClip и передача в Shape это определяет траекторию отсечения, которую Вы хотите использовать. Можно уменьшить траекторию отсечения, вызывая clip метод и передающий в другом Shape; клип устанавливается в пересечение текущего клипа и указанного Shape.
Этот пример анимирует траекторию отсечения, чтобы показать различные части изображения.
Если Вы не видите, что апплет работает, Вы должны установить .
Траектория отсечения определяется пересечением эллипса и прямоугольника, размерности которого устанавливаются в произвольном порядке. Эллипс передают к setClip метод, и затем clip вызывается, чтобы установить траекторию отсечения в пересечение эллипса и прямоугольника.
private Ellipse2D ellipse = new Ellipse2D.Float(); private Rectangle2D rect = new Rectangle2D.Float(); ... ellipse.setFrame(x, y, ew, eh); g2.setClip(ellipse); rect.setRect(x+5, y+5, ew-10, eh-10); g2.clip(rect);
Область отсечения может также быть создана из текстовой строки. Следующий пример создает a TextLayout со строкой Звездная Ночь. Затем, это получает схему TextLayout. TextLayout.getOutline метод возвращает a Shape объект и a Rectangle создается из границ этого Shape объект. Границы содержат все пиксели, которые может потянуть расположение. Цвет в графическом контексте выбирается к синему, и форма схемы оттягивается, как иллюстрировано следующим изображением и фрагментом кода.

FontRenderContext frc = g2.getFontRenderContext();
Font f = new Font("Helvetica", 1, w/10);
String s = new String("The Starry Night");
TextLayout textTl = new TextLayout(s, f, frc);
AffineTransform transform = new AffineTransform();
Shape outline = textTl.getOutline(null);
Rectangle r = outline.getBounds();
transform = g2.getTransform();
transform.translate(w/2-(r.width/2), h/2+(r.height/2));
g2.transform(transform);
g2.setColor(Color.blue);
g2.draw(outline);
Затем, область отсечения устанавливается на графическом контексте, используя Shape объект, создаваемый из getOutline. starry.gif изображение, которое является известным рисованием Ван Гога, Звездная Ночь, вовлекается в эту область отсечения, запускающуюся в левом нижнем углу Rectangle объект.
g2.setClip(outline); g2.drawImage(img, r.x, r.y, r.width, r.height, this);
Если Вы не видите, что апплет работает, Вы должны установить .