程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 在Video Canvas上繪制圖形

在Video Canvas上繪制圖形

編輯:關於JAVA

我們經常使用MMAPI提供的功能播放視頻或者拍照圖片,這時候可能希望在Video Canvas上繪制一些菜單或者圖形。本文介紹如何在SonyEricsson的機型上完成上面的特性。
在SonyEricsson JP7的機型上,實現上面的特性非常容易。只需要在初始化VideoControl的時候指定一些特定的參數即可。例如
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO | (overlay << 8) | (Sprite.TRANS_ROT90 << 4), canvas);
其中overlay=1的時候代表繪制的圖形覆蓋在video之上,overlay=0的時候代表不覆蓋。
對於JP6或者以前的版本,如果也想實現這樣的效果則需要使用一些小技巧。首先我們還是初始化VideoControl,
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, canvas);

問題的關鍵在Canvas的paint方法的處理上,為了避免繪制的內容被覆蓋我們必須等Player啟動之後再繪制我們的內容,實現這一點可以同過PlayerListener來完成,如下所示:

public void playerUpdate(Player p, String event, Object obj) {
switch(p.getState()){
case Player.STARTED:
initialized = true;
break;
}
}

在繪制完成後,還需要調用Graphics.setClip(0,0,0,0)方法。
public void paint(Graphics g) {
if(camera!=null){
if(camera.isInitialized() && !update){
menu.draw(g);
g.setClip(0, 0, 0, 0);
}else if(update){
update = false;
}
}
}

運行結果如上面所示。這個特性是比較有用的,今天閱讀SE開發者社區的時候發現的,大家可以看看原文
http://developer.sonyericsson.com/site/global/techsupport/
tipstrickscode/java/p_video_overlay_draw_canvas.jsp

UploadFiles/2007-1/18575526.zip這個是代碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved