您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

02 youtube官網網頁版設置簽名圖片背景變透明(youtube網頁版怎么看)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-07 17:05:09【】2人已围观

简介標平臺支持所要求的功能時怎么辦?在這種情況下模擬缺失的功能可能只會讓您南轅北轍直到現在對跨平臺透明和不規則窗口有興趣的Swing應用程序有三種主要可選方式在顯示目標窗口之前使用javaawtRobot

標平臺支持所要求的功能時怎么辦?在這種情況下 模擬缺失的功能可能只會讓您南轅北轍

直到現在 對跨平臺透明和不規則窗口有興趣的 Swing 應用程序有三種主要可選方式

在顯示目標窗口之前使用 java awt Robot 捕獲桌面 這種方法在 Joshua Marinacci 和 Chris Adamson 編寫的 《 Swing Hacks 》 書中的 第 章 中已經進行了評述

使用 JNI 包裝目標平臺的本機 API 使用由 Timothy Wall 開發的 JNA 庫 該庫在 年問世 Timothy 對于 不規則窗口 和 字母掩碼透明度 已經發表過博客

第一種方法的主要問題是要使用 Robot 類 即使您有權限獲得屏幕截圖 您也必須在顯示窗口之前完成 此外 如何保持桌面后臺同步?假設在后臺正在播放 YouTube 視頻 與窗口生成的事件不同( 調整大小 移動 ) AWT 并不在任何交叉窗口的重畫上提供注冊偵聽器的任何方式 雖然 Chris 和 Joshua 通過在至少每秒內進行快照提供解決方法 這對于覆蓋后臺視頻播放還不夠 而且在每次快照前需要對窗口加以隱藏 這可能導致可見的閃爍

使用 JNI 和 JNA 導致顯著的視覺保真性改進 純 JNI 會帶來開銷的急劇下降 您必須將目標平臺的每一個相關的 API 綁定 還要捆綁本機庫 JNA 為您分擔這項重任 它捆綁主機庫并提供能在運行時提取并加載它們的類加載器 它支持 Linux OS X Windows Solaris 和 FreeBSD

Consumer JRE Java SE Update N 通常稱作 Consumer JRE 是 Sun 公司的努力成果 為重新配置 Java將其作為開發富桌面應用程序的可行方法 在 Consumer JRE 中的新功能和主要改進列表相當廣泛 并將特別閃耀的寶石隱藏在最新一周構建代碼之一的發行說明中 Bug 被簡單地賦予 需要支持不規則/透明窗口 的標題 但是該實現核心 JDK 新功能的可能性所帶給 Swing 開發人員的意義是深遠的 本文的剩余部分將顯示能夠實現和如何實現該功能的幾個示例

在進一步研究之前 有一個非常重要的注意事項 由于 Consumer JRE 被官方認為是對穩定 JDK 發行的一個次要更新 因此在 公共 包中不能添加任何新的 API( 類 方法等等 ) 例如 java awt 或 javax swing 在本文中討論的所有 API 在新 sun awt AWTUtilities 類中出現 該類不是官方支持的部分 API 它在 Java SE 中的位置最有可能發生改變 簽名方法可能在現在和最終的 Consumer JRE 發行之間發生輕微變化 所以當這種改變發生時準備更改您自己的代碼

AWTUtilities 類我首先討論 sun awt AWTUtilities 類 請參見 在核心 Java 中的透明和不規則窗口 博客條目 首先我們從圖 中的簡單窗口入手

圖 帶有控件的窗口

要使窗口透明 您可以使用 AWTUtilities setWindowOpacity(Window float) 方法 如圖 所示

圖 相同的窗口 但是有 % 的不透明度

要使窗口不規則 您可以使用 AWTUtilities setWindowShape(Window Shape) 方法 如圖 所示

圖 相同的窗口 但是被一個橢圓剪裁

正如您從圖 中能看到的 不規則的窗口看起來不是很好 窗口的邊緣呈鋸齒狀并且整體印象也不是很干凈 要獲得不規則窗口的更佳視覺效果 您必須使用 AWTUtilities setWindowOpaque(Window boolean) API 并使用柔性裁剪繪畫窗口背景 這在后續的 Swing窗口的柔性裁剪和每像素透明度 博客條目中進行了闡明 對于窗口的左上角和右上角 該條目采用 Chris Campbell 的 柔性裁剪教程 以及 Romain Guy 的 反射教程 其中包括 Sebastien Petrucci 的改進 圖 顯示了每個像素透明的柔性裁剪窗口

圖 柔性裁剪和每個像素透明的窗口

現在我們手頭上已經有了這些 API 我們打算做些什么呢?對它們進行探索這種可能性當然是另人好奇的 我們正打算看看幾個多樣混合的示例

工具提示讓我們使應用工具提示變得透明怎么樣?對于輕量級工具提示 實現這一目標是相當容易的 因為它們被作為 Swing 頂級窗口的一部分加以繪畫 ( 要獲得關于輕量級彈出菜單的詳細信息 請參見 玻璃窗格和輕量級彈出菜單 條目 )但是 一旦工具提示成為重量級并 打破 窗口綁定 您必須繼續采用 Robot 或 JNI/JNA 現在讓我們看一看使用 AWTUtilities API 如何完成這項任務

javax swing PopupFactory 是創建彈出菜單的廠 工具提示只是彈出功能的一個例子 其他例子包括組合框下拉列表和菜單 PopupFactory setSharedInstance API 可以被用于設置自定義彈出廠 這就是我們想要做的 當前的彈出廠被用于創建所有應用彈出窗口 我們將在所有的工具提示上安裝自定義不透明廠

核心彈出廠的實現是相當復雜的 首先嘗試創建輕量級彈出窗口 當要求創建重量級窗口時 系統要管理高速緩存以便重用先前創建的彈出窗口 實現過程將創建一個新的重量級彈出窗口 在相對較新的膝上型電腦上運行不同的方案還未顯示任何突出的性能突破 讓我們從自定義彈出廠著手研究

public class TranslucentPopupFactory extends PopupFactory { @Override public Popup getPopup(Component owner Component 買粉絲ntents int x int y) throws IllegalArgumentException { // A more plete implementation would cache and reuse // popups return new TranslucentPopup(owner 買粉絲ntents x y) }}TranslucentPopup 的實現相當簡單 構造器創建新的 JWindow 將工具提示的不透明度設置為 從 Looks 項目安裝提供拖放陰影的自定義邊框

TranslucentPopup(Component owner Component 買粉絲ntents int ownerX int ownerY) { // create a new heavyweight window this popupWindow = new JWindow() // mark the popup with partial opacity sun awt AWTUtilities setWindowOpacity(popupWindow (買粉絲ntents instanceof JToolTip) ? f f) // determine the popup location popupWindow setLocation(ownerX ownerY) // add the 買粉絲ntents to the popup popupWindow getContentPane() add(買粉絲ntents BorderLayout CENTER) 買粉絲ntents invalidate() JComponent parent = (JComponent) 買粉絲ntents getParent() // set the shadow border parent setBorder(new ShadowPopupBorder()) }現在我們需要重寫 Popup 的 show() 方法來標記整個彈出窗口為透明樣式 這要求拖放陰影邊框的每個像素具有透明性

@Override public void show() { this popupWindow setVisible(true) this popupWindow pack() // mark the window as non opaque so that the // shadow border pixels take on the per pixel // translucency sun awt AWTUtilities setWindowOpaque(this popupWindow false) }hide() 方法只是隱藏并處置彈出窗口

@Override public void hide() { this popupWindow setVisible(false) this popupWindow removeAll() this popupWindow dispose() }要安裝該彈出窗口 僅簡單調用

PopupFactory setSharedInstance(new TranslucentPopupFactory()) 圖 顯示了一個具有透明工具提示的示例幀 注意 與工具提示保持視覺(透明性和拖放陰影邊框)上的一致性跨越 Swing 幀綁定并擴展到后臺 Eclipse 窗口

    圖 工具提示

現在我們做相同的動畫 當工具提示顯示時將顏色調淡些 當它被隱藏起來時把它的顏色漸隱如何?一旦您熟悉了 AWTUtilities API 上述操作不難實現 下面給出 show() 方法的代碼

@Override public void show() { if (this toFade) { // mark the popup with % opacity this currOpacity = sun awt AWTUtilities setWindowOpacity(popupWindow f) } this popupWindow setVisible(true) this popupWindow pack() // mark the window as non opaque so that the // shadow border pixels take on the per pixel // translucency sun awt AWTUtilities setWindowOpaque(this popupWindow false) if (this toFade) { // start fading in this fadeInTimer = new Timer( new ActionListener() { public void actionPerformed(ActionEvent e) { currOpacity += if (currOpacity <= ) { sun awt AWTUtilities setWindowOpacity(popupWindow currOpacity / f) // workar

很赞哦!(8)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:甘肃兰州永登县

工作室:小组

Email:[email protected]