Spec-Zone .ru
спецификации, руководства, описания, API
След: 2-D Графика
Урок: Усовершенствованные Темы в Java2D
Отсечение Области Рисунка
Домашняя страница > 2-D Графика > Усовершенствованные Темы в Java2D

Отсечение Области Рисунка

Любой Shape объект может использоваться в качестве траектории отсечения, которая ограничивает часть области рисунка, которая будет представлена. Траектория отсечения является частью Graphics2D контекст; чтобы установить атрибут клипа, Вы вызываете Graphics2D.setClip и передача в Shape это определяет траекторию отсечения, которую Вы хотите использовать. Можно уменьшить траекторию отсечения, вызывая clip метод и передающий в другом Shape; клип устанавливается в пересечение текущего клипа и указанного Shape.

Пример: ClipImage

Этот пример анимирует траекторию отсечения, чтобы показать различные части изображения.


Отметьте:  

Если Вы не видите, что апплет работает, Вы должны установить выпуск 6 (или позже) Java Комплект разработчика SE (JDK).


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);


Отметьте:  

Если Вы не видите, что апплет работает, Вы должны установить выпуск 6 (или позже) Java Комплект разработчика SE (JDK).


Starry.java содержит полный код для этой программы. Этот апплет требует Starry.gif файл изображения.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Преобразовывая Формы, текст, и Изображения
Следующая страница: Составление композита Графики