2011-06-01 76 views
2

我正在尋找一些方法來繪製draw2d框架內的半透明數字。 當前我使用org.eclipse.draw2d.GraphicssetAlpha()。問題是,如果我繪製超過一半的透明數字,它會減慢整個用戶界面的速度。SWT draw2d阿爾法混合

這是另一個關於它的性能的問題[1]。它針對Linux上的SWT,我的目標是Linux和Windows。 Windows(Win7)系統有一個支持3D的圖形卡和一個i7 q720。 Linux機器裝備更好,也有3D,所以我認爲這不是平臺的性能問題。

我的問題是:是否有一種高性能的方式來實現在draw2d中的alpha混合?

我試過使用OpenGL的LWJGL。由於draw2d和OpenGL不能混用,我必須依賴draw2d,我認爲我可以做這樣的事情:draw2d - > OpenGL - > draw2d here其中canvas是OpenGL繪圖發生的畫布,c1是畫布在那裏我想獲得繪製的OpenGL圖片。但我的attempt複製OpenGL圖紙不起作用,它只是底層Canvas(canvas)背景。除了這個我不知道這是否會提高「perormance」反正...

感謝,
ATX

回答

0

已知此問題,但沒有解決。在draw2d的郵件列表中有一個關於此問題的線索:mailing list

TL; DR:由於LWJGL和Eclipse之間的許可證問題,可能的解決方案被丟棄。

0

確保您所有的源/目標圖像的深度相同(例如ARGB) 否則,轉換費用,複製過程中發生(SRC-> DEST)

選區不允許訪問其基礎緩衝區, 據我所知。 MemoryImageSource可能是一種方法。

您可以使用像抓住你的OpenGL繪圖圖片:的繁瑣

BufferedImage capture = new Robot().createScreenCapture(new Rectangle(canvas.getX(), canvas.getY(), canvas.getWidth(), canvas.getHeight())); 

類,但速度非常快。

我用它將我的實時動畫幀的jpeg保存到文件夾中。

VirtualDub然後從這些幀中創建一個電影。必須玩幀率;)

偉大的生產youtube teasers! You can see one here!

+0

感謝您的諮詢!我通過實現org.eclipse.draw3d的一半LwjglGraphics實現並將其集成到org.eclipse.draw2d中來解決了我的問題。奇蹟般有效。 – atx 2012-01-10 07:24:07