當前位置:
首頁 >
JavaFx实现-渐变效果之一
發布時間:2024/9/20
33
豆豆
生活随笔
收集整理的這篇文章主要介紹了
JavaFx实现-渐变效果之一
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
自從JavaOne大會推出JavaFX后,我一直比較關注這個項目,它是一種利用Java的腳本技術,功能上近似于Flash。 它的優勢在于,Flash雖有很好的功能和普及度,但它永遠不能交付Java類庫的大部分功能,而 JavaFX可以。因為也給了JavaFX一個“可能性”上的生存空間。
但是由于JavaFX推出的太晚,兼之文檔較少,很多人還是對其望而止步,干等下去也不是辦法。所以我最近空閑時會寫一些JavaFX的小例子以作練習之用。
import?javafx.ui.*;
import?javafx.ui.canvas.*;
//圓點漸變過濾器
class?CircleTransition?extends?CompositeNode?...{
??//設定參數項?變量名:類型
????attribute?r:?Number;
????attribute?d:?Number;
????attribute?w:?Number;
????attribute?h:?Number;
????attribute?xp:?Number;
????attribute?img:?Image;
}
//為參數賦值
attribute?CircleTransition.r??=?-45;
attribute?CircleTransition.d??=?16;
attribute?CircleTransition.w??=?320;
attribute?CircleTransition.h??=?240;
attribute?CircleTransition.xp?=?-w;
//注入過濾器參數
function?CircleTransition.composeNode()?=?Group?...{
??content:[Clip?...{
??//注入shape
????shape:?Rect?...{?x:0,?y:0,?width:w,?height:h?},
????//設定偏移
????transform:?translate(10,?40),
????//注入Group
????content:?Group?...{
????//加載ImageView用以顯示圖像
??????content:?[ImageView?...{
????????transform:?translate(-60,?-30),
????????p_w_picpath:?this.img,
????????//分段繪制圖像
??????},?Subtract?...{
????????shape1:?Rect?...{?x:0,?y:0,?width:w*4,?height:h*4?},
????????fill:orange,
????????//bind
????????transform:?bind?[rotate(r,?0,?h),?translate(-w+xp,?0)],
????????shape2:?Union?...{
??????????content:?[foreach?(j?in?[0..w/d],?i?in?[0..h/d*2])?Circle?...{
????????????radius:?j,
????????????cx:?w-j*d,
????????????cy:?i*d,
??????????},?Rect?...{
????????????x:-w,?y:0,?width:w+w/2,?height:h*2,
??????????}]
????????}
??????}],
????}
??},?View?...{
????content:?GroupPanel?...{
?????var?row?=?Row?...{alignment:?BASELINE}
?????var?column1?=?Column?...{}
?????var?column2?=?Column?...{}
?????//鼠標設為默認
??????cursor:?DEFAULT
??????rows:?[row]
??????columns:?[column1,?column2]
??????content:?[SimpleLabel?...{
????????row:?row
????????column:?column1
????????text:?"操作:"
??????},?Button?...{
????????row:?row
????????column:?column2
????????opaque:?false
????????mnemonic:?T
????????text:?"變更圖像"
????????action:?operation()?...{
????????????xp?=?[0,d..w*2]?dur?2000;
????????}
??????}]
????}
??}
]};
Frame?...{
??title??:?"JavaFX?-?圖像漸變效果1"
??width??:?350
??height?:?350
??content:?Canvas?...{?content:?CircleTransition...{img:?...{?url:?"p_w_picpath.jpg"?}}?}
??centerOnScreen:?true
??visible:?true
}; ?
效果圖:
第一次寫代碼的感覺就是效率太慢……
由解釋到執行的效率比Swing還不能令人忍受(當然,有代碼優化的余地,但還是太慢)
且拋去效率問題不提,桌面JavaFX現在還有一個比較關鍵的問題,那就是如何部署。對于從前沒有安裝過JRE的用戶來說,JRE體積太大,而且現在從瀏覽器上進行按需安裝(如使用Java Start Web等)的用戶體驗也不是特別好。
目前Sun的官方解決思路是為JRE引入一種新型的部署模型,初次下載時體積非常小,只有在需要時才下載其他的JRE組件。但是具體的效果如何,我們還需拭目以待。
PS:如果Windows能普及jre該有多好啊……
但是由于JavaFX推出的太晚,兼之文檔較少,很多人還是對其望而止步,干等下去也不是辦法。所以我最近空閑時會寫一些JavaFX的小例子以作練習之用。
import?javafx.ui.*;
import?javafx.ui.canvas.*;
//圓點漸變過濾器
class?CircleTransition?extends?CompositeNode?...{
??//設定參數項?變量名:類型
????attribute?r:?Number;
????attribute?d:?Number;
????attribute?w:?Number;
????attribute?h:?Number;
????attribute?xp:?Number;
????attribute?img:?Image;
}
//為參數賦值
attribute?CircleTransition.r??=?-45;
attribute?CircleTransition.d??=?16;
attribute?CircleTransition.w??=?320;
attribute?CircleTransition.h??=?240;
attribute?CircleTransition.xp?=?-w;
//注入過濾器參數
function?CircleTransition.composeNode()?=?Group?...{
??content:[Clip?...{
??//注入shape
????shape:?Rect?...{?x:0,?y:0,?width:w,?height:h?},
????//設定偏移
????transform:?translate(10,?40),
????//注入Group
????content:?Group?...{
????//加載ImageView用以顯示圖像
??????content:?[ImageView?...{
????????transform:?translate(-60,?-30),
????????p_w_picpath:?this.img,
????????//分段繪制圖像
??????},?Subtract?...{
????????shape1:?Rect?...{?x:0,?y:0,?width:w*4,?height:h*4?},
????????fill:orange,
????????//bind
????????transform:?bind?[rotate(r,?0,?h),?translate(-w+xp,?0)],
????????shape2:?Union?...{
??????????content:?[foreach?(j?in?[0..w/d],?i?in?[0..h/d*2])?Circle?...{
????????????radius:?j,
????????????cx:?w-j*d,
????????????cy:?i*d,
??????????},?Rect?...{
????????????x:-w,?y:0,?width:w+w/2,?height:h*2,
??????????}]
????????}
??????}],
????}
??},?View?...{
????content:?GroupPanel?...{
?????var?row?=?Row?...{alignment:?BASELINE}
?????var?column1?=?Column?...{}
?????var?column2?=?Column?...{}
?????//鼠標設為默認
??????cursor:?DEFAULT
??????rows:?[row]
??????columns:?[column1,?column2]
??????content:?[SimpleLabel?...{
????????row:?row
????????column:?column1
????????text:?"操作:"
??????},?Button?...{
????????row:?row
????????column:?column2
????????opaque:?false
????????mnemonic:?T
????????text:?"變更圖像"
????????action:?operation()?...{
????????????xp?=?[0,d..w*2]?dur?2000;
????????}
??????}]
????}
??}
]};
Frame?...{
??title??:?"JavaFX?-?圖像漸變效果1"
??width??:?350
??height?:?350
??content:?Canvas?...{?content:?CircleTransition...{img:?...{?url:?"p_w_picpath.jpg"?}}?}
??centerOnScreen:?true
??visible:?true
}; ?
效果圖:
第一次寫代碼的感覺就是效率太慢……
由解釋到執行的效率比Swing還不能令人忍受(當然,有代碼優化的余地,但還是太慢)
且拋去效率問題不提,桌面JavaFX現在還有一個比較關鍵的問題,那就是如何部署。對于從前沒有安裝過JRE的用戶來說,JRE體積太大,而且現在從瀏覽器上進行按需安裝(如使用Java Start Web等)的用戶體驗也不是特別好。
目前Sun的官方解決思路是為JRE引入一種新型的部署模型,初次下載時體積非常小,只有在需要時才下載其他的JRE組件。但是具體的效果如何,我們還需拭目以待。
PS:如果Windows能普及jre該有多好啊……
轉載于:https://blog.51cto.com/cping1982/130165
總結
以上是生活随笔為你收集整理的JavaFx实现-渐变效果之一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网商银行是支付宝旗下的吗
- 下一篇: 应用程序中断处理