簡體   English   中英

Java動畫透明啟動畫面

[英]Java Animated transparent splash screen

我想制作一個帶有動畫gif的啟動畫面。 我的動畫gif具有透明背景,因此我只想將gif的可見部分顯示為初始屏幕。 首先,我必須指定我正在使用Matlab,因此不可能(或我還沒有找到方法)覆蓋組件/功能。 這是我的示例代碼:

 win = javax.swing.JWindow;
 jl = javax.swing.JLabel(javax.swing.ImageIcon('C:\Users\ME\Documents\loader512-.gif'));
 win.getContentPane.add(jl);
 win.setAlwaysOnTop(true);
 win.pack;
 %% set the splash image to the center of the screen
 screenSize = win.getToolkit.getScreenSize;
 screenHeight = screenSize.height;
 screenWidth = screenSize.width;
 % get the actual splashImage size
 imgHeight = 512;
 imgWidth = 512;
 win.setLocation((screenWidth-imgWidth)/2,(screenHeight-imgHeight)/2);   
 win.show

搖動圖像效果很好,但是取決於窗口的透明度,其背景為白色或灰色。 我還嘗試過使用JLabel的背景,但沒有成功。

請幫忙 !

代碼的問題在於,每個給定的窗口都有特定的定義形狀。 在不更改形狀的情況下,每個Window對象都有一個矩形畫布,可以在其中繪制畫布。 僅當您在GIF圖像后面繪制對象時,透明度才適用。 如果啟用了透明性,則渲染器僅繪制背景色(通常為黑色或白色或某些淺灰色),如果沒有其他顏色。

自Java 7發行以來,新方法稱為setShape(Shape);。 出現在Window對象中。 如果您的動畫GIF具有固定的透明度“區域”,建議您創建一個自定義java.awt.Shape對象,在其中通過設置形狀傳遞給win對象。

例:

win = javax.swing.JWindow;
jl = javax.swing.JLabel(javax.swing.ImageIcon('C:\Users\ME\Documents\loader512-.gif'));
win.getContentPane.add(jl);
Shape S = createCustomShape(); //Create your shape
win.setShape(S);
win.setAlwaysOnTop(true);
//{rest of code...}

如果動畫GIF的透明背景不斷變化,則必須創建一個復雜的實現,其中Shape對象將響應GIF逐幀更新。 我認為,如果是這種情況,我不會打擾。 :)

此處閱讀更多有關Shape對象的信息

注意Shape“對象”實際上是一個接口,可以使用實現子類之一,也可以創建自己的子類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM