Spec-Zone .ru
спецификации, руководства, описания, API
|
Любой Shape
объект может использоваться в качестве траектории отсечения, которая ограничивает часть области рисунка, которая будет представлена. Траектория отсечения является частью Graphics2D
Graphics2D.setClip
и передача в Shape
это определяет траекторию отсечения, которую Вы хотите использовать. Можно уменьшить траекторию отсечения, вызывая clip
метод и передающий в другом Shape
; клип устанавливается в пересечение текущего клипа и указанного Shape
.
Этот пример анимирует траекторию отсечения, чтобы показать различные части изображения.
Если Вы не видите, что апплет работает, Вы должны установить
ClipImage.java
содержит полный код для этого апплета. Апплет требует clouds.jpg
файл изображения.
Траектория отсечения определяется пересечением эллипса и прямоугольника, размерности которого устанавливаются в произвольном порядке. Эллипс передают к 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);
Если Вы не видите, что апплет работает, Вы должны установить
Starry.java
содержит полный код для этой программы. Этот апплет требует Starry.gif
файл изображения.