2013-06-18 56 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(); 

}

我打電話其中反應上傳事件的另一種方法這種方法。

我也在這個類中保存up; loaded圖像。

但是這是行不通的,如果我可以如何得到所有矩形繪製後的圖像,然後我可以把該圖像放在網頁中,但我沒有得到它如何實現這一點。 謝謝大家的閱讀和回覆。

+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你真正想從一個BufferedImageGraphics2D,它是你寫出來的文件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-color保留爲transparent,並根據需要進行定位。

+0

謝謝你回覆你的想法非常好,現在我只有一個麻煩,我無法找出如何動態應用CSS,我想從其控制器應用CSS按鈕事件中的ZK頁面(.zul) 。任何幫助,這將不勝感激。這樣做的理由是:我想上傳表單,並且其字段將在此上傳事件中突出顯示。非常感謝你。 –

+0

您可以使用'setStyle'和'setSclass'從Java設置CSS,但在這之前,請在SO上發佈另一個問題,並對問題進行完整說明。提供您希望實現的圖片以及您嘗試過的示例代碼。在不知道這些信息的情況下,我們不能推薦特定的方法。 –

+0

感謝您的幫助,我開始瞭解zk的另外兩件事,我將在我的項目中使用... :) :) :) –