2013-06-18 3 views
0

В настоящее время я работаю над рамкой zk, которая была предоставлена ​​zkoss, я могу отображать изображение на веб-странице, но я хочу поместить красные выровненные прямоугольники над некоторыми полями. Я пытаюсь это:Прямоугольник над существующим изображением, а затем отобразите изображение

// рисует прямоугольник над буферизацией частных недействительных drawRectangles() {

Graphics2D graphics = image.createGraphics(); 

Iterator iterator = setOfRectangles.iterator(); 
while(iterator.hasNext()) { 
    Rectangle rect = (Rectangle)iterator.next(); 
    graphics.drawRoundRect(rect.x, rect.y, rect.height, rect.width, 5, 5); 
} 
graphics.dispose(); 

}

Я называю этот метод в другом методе, который реагирует на события загрузки.

Я также сохраняю загруженное изображение в этом классе.

но это не работает, если я могу каким-то образом получить изображение после рисования всех прямоугольников, тогда я могу поместить это изображение на веб-страницу, но я не понимаю, как это сделать. Спасибо всем за чтение и ответ.

+0

Что «не работает» в текущем подходе? –

ответ

0

Это то, что я сделал, и его работы:

Graphics2D graphics = image.createGraphics(); 

Iterator iterator = setOfRectangles.iterator(); 
while(iterator.hasNext()) { 
    Rectangle rect = (Rectangle)iterator.next(); 
    float thickness = 3.0F; 
    Stroke stroke = graphics.getStroke(); 
    graphics.setStroke(new BasicStroke(thickness)); 

    graphics.drawRoundRect(rect.x, rect.y, rect.height, rect.width, 5, 5); 
    graphics.setStroke(stroke); 
    graphics.setColor(Color.RED); 
} 

wholeImage.setContent(image); 
graphics.dispose(); 

После выполнения этой нагрузки весь образ в

1

С точки зрения общей Java, экспортировать Graphics2D вы на самом деле хотите, чтобы получить Graphics2D от BufferedImage и это BufferedImage вы пишете в файл.

BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
Graphics2D g2 = bi.createGraphics(); 
for(Rectangle rect : setOfRectangles) { 
    graphics.drawRoundRect(rect.x, rect.y, rect.height, rect.width, 5, 5); 
} 
ImageIO.write(bi, "PNG", new File("myPicture.png")); 

Это не связано с ZK, и вы найдете много ссылок на SO и в других местах. Вы получите обычный файл изображения, который может отображаться в ZK, как обычно.

Это, я бы рекомендовал альтернативный подход. В зависимости от вашего конкретного варианта использования это, вероятно, можно сделать с помощью чистого CSS. CSS-Tricks имеет хороший учебник под названием «Text Blocks Over Image», в котором исследуется идея. Вам не нужен текст в вашем div, просто нажмите на него border, оставьте background-colortransparent и расположите его по мере необходимости.

+0

Спасибо, что ответили, что ваша идея действительно приятная, теперь у меня есть только одна проблема. Я не могу узнать, как я буду применять CSS динамически, я хочу применить CSS к событию кнопки на странице zk (.zul) с его контроллера , Любая помощь по этому поводу будет оценена по достоинству. Причина этого заключается в следующем: я хочу загрузить формы, и его поля будут выделены в этом событии загрузки. Большое спасибо. –

+0

Вы можете установить CSS с Java, используя 'setStyle' и' setSclass', но прежде чем вы это сделаете, отправьте еще один вопрос здесь, где описано полное описание вашей проблемы. Предоставьте фотографии того, что вы надеетесь достичь, и пример кода того, что вы пробовали. Не зная этой информации, мы не можем рекомендовать конкретный подход. –

+0

спасибо за вашу помощь, я узнал еще две вещи о zk, которые я собираюсь использовать в своем проекте ... :) :) :) –

Смежные вопросы