Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
lass2K 是一款可以讓 Windows 窗口 變 透明 的小工具( 僅 26.1KB 大小 ),單文件程序免安裝。打開后即可看到 下方圖示 的程序界面,底部 Ok / Hide Me 按鈕可以隱藏工具界面,可在 任務(wù)欄 托盤內(nèi)再次打開;Unload Glass2k 按鈕為 退出 按鈕,如果不需要使用時(shí)點(diǎn)擊即可關(guān)閉工具。
該工具的上手使用也非常簡(jiǎn)單,工具內(nèi)的 Help / Documentation 提示內(nèi)已說(shuō)明 使用方法。運(yùn)行 Glass2k 后點(diǎn)擊 OK / Hide Me 隱藏工具,打開任意需要進(jìn)行透明化調(diào)整的窗口內(nèi)同時(shí)按快捷鍵 Ctrl + Alt + 1~9 范圍內(nèi)的任意數(shù)字,數(shù)值越小越透明,數(shù)值越大越清晰。Ctrl + Alt + 0 則是恢復(fù)默認(rèn)。
最后小編以 Everything 為例,逐級(jí)調(diào)整 透明效果。有需要 上班摸魚 或 同時(shí)閱覽 多份文件時(shí)可以使用該工具。不過(guò)較為遺憾的是該工具不能對(duì)透明化窗體進(jìn)行 置頂,因此無(wú)置頂功能的軟件則需要借助于第三方工具實(shí)現(xiàn)。
為解決 窗口置頂 的問(wèn)題,小編再分享一款 窗口置頂 工具給大家,打開后選擇需要置頂?shù)?窗體 按默認(rèn)的 F7 熱鍵置頂即可完成操作,非常的簡(jiǎn)單實(shí)用,有需要的可以到 網(wǎng)盤 內(nèi)下載兩款工具的合集壓縮包進(jìn)行體驗(yàn)。
資源獲?。核叫呕貜?fù)關(guān)鍵詞「 0724 」獲取下載地址,或關(guān)注公眾號(hào) 【 拾集 Plus 】( shijiplus )回復(fù)相同關(guān)鍵詞獲取。頭條消息回復(fù)不及時(shí)多請(qǐng)諒解,如有任何問(wèn)題留言后耐心等待回復(fù),感謝諒解。
規(guī)則窗體的實(shí)現(xiàn)有兩種方式:
一種是設(shè)置窗體的掩碼圖像;
另一種是設(shè)置窗體背景透明,然后重寫其繪圖函數(shù),將背景圖繪制上去。
第一種方式:
首先要準(zhǔn)備兩張圖像,一張是要顯示的圖像,另一張是第一張圖的掩碼圖像,黑色部分是你的窗體要顯示的部分,如圖:
具體實(shí)現(xiàn)的關(guān)鍵代碼如下:
//IrregularForm1.h IrregularForm1::IrregularForm1(QWidget *parent) : QWidget(parent) { setWindowFlags(Qt::FramelessWindowHint);//設(shè)置窗體無(wú)邊框 //設(shè)置背景 QPixmap pixmap(":/pic.png"); QPalette palette; palette.setBrush(backgroundRole(), QBrush(pixmap)); setPalette(palette); //設(shè)置窗體的掩碼圖像,摳除圖像的白色區(qū)域?qū)崿F(xiàn)不規(guī)則窗體 QBitmap bitmap(":/picmask.png"); setMask(bitmap); } |
運(yùn)行效果不是特別完美,應(yīng)該是我的掩碼圖像的問(wèn)題,如圖:
這種方式有一個(gè)問(wèn)題,就是當(dāng)你的圖像特別不規(guī)則的時(shí)候,會(huì)有很明顯的鋸齒出現(xiàn)。之前做過(guò)一個(gè)卡通圖像就出現(xiàn)這個(gè)問(wèn)題,解決的辦法是使用下面的第二種方法。
第二種方式:
只需要準(zhǔn)備一張圖片,透明部分將不會(huì)顯示,支持半透明。我這里弄了一張背景透明,前景半透明的圖像,如圖:
具體實(shí)現(xiàn)的關(guān)鍵代碼如下:
//IrregularForm2.cpp IrregularForm2::IrregularForm2(QWidget *parent) : QWidget(parent) { this->setWindowFlags(Qt::FramelessWindowHint);//設(shè)置窗體無(wú)邊框 this->setAttribute(Qt::WA_TranslucentBackground);//設(shè)置背景透明 pic.load(":/IrregularPic.png");//加載圖像 this->resize(pic.size()); } //重寫繪圖事件 void IrregularForm2::paintEvent(QPaintEvent *) { QPainter painter(this); painter.drawPixmap(0, 0, pic);//繪制圖像 } |
效果截圖:
說(shuō)到這里,我們的不規(guī)則透明窗體雖然創(chuàng)建出來(lái)了,但是現(xiàn)在我們無(wú)法移動(dòng)它了,現(xiàn)在我們就來(lái)實(shí)現(xiàn)左鍵拖動(dòng)窗體的功能,首先要先聲明兩個(gè)變量,另外要重寫三個(gè)事件,代碼如下:
//IrregularForm1.h class IrregularForm1 : public QWidget { Q_OBJECT public: explicit IrregularForm1(QWidget *parent=0); protected: QPoint oldPos; bool press; void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); }; |
關(guān)鍵的實(shí)現(xiàn)代碼(press變量在構(gòu)造函數(shù)中初始化為false):
//IrregularForm1.cpp void IrregularForm1::mousePressEvent(QMouseEvent *event) { if(event->button()==Qt::LeftButton) { oldPos=event->globalPos(); press=true; } } void IrregularForm1::mouseMoveEvent(QMouseEvent *event) { if (press) { this->move(this->pos() + event->globalPos() - oldPos); oldPos=event->globalPos(); } } void IrregularForm1::mouseReleaseEvent(QMouseEvent *event) { press=false; } |
這樣就實(shí)現(xiàn)不規(guī)則窗體的移動(dòng)功能了。
【領(lǐng)QT開發(fā)教程學(xué)習(xí)資料,進(jìn)Qt開發(fā)交流君羊:546183882 莬廢領(lǐng)取,先碼住不迷路~】
JavaFX應(yīng)用程序的核心組件之一是Stage,它是GUI應(yīng)用程序的頂層窗口容器。在本文中,我們將深入探討JavaFX Stage的基礎(chǔ)知識(shí)、創(chuàng)建和設(shè)置、布局和設(shè)計(jì)、生命周期、高級(jí)功能以及與Scene的交互。了解Stage的這些方面對(duì)于構(gòu)建豐富、交互性強(qiáng)的JavaFX應(yīng)用程序至關(guān)重要。
Stage是JavaFX中表示窗口的主要類。它作為一個(gè)容器,包含了一個(gè)或多個(gè)Scene,每個(gè)Scene又包含了各種UI組件。Stage的創(chuàng)建是JavaFX應(yīng)用程序的第一步,它為用戶提供了與應(yīng)用程序交互的窗口。
創(chuàng)建一個(gè)基本的Stage對(duì)象非常簡(jiǎn)單:
Stage primaryStage=new Stage();
然后,我們可以設(shè)置Stage的一些基本屬性,例如標(biāo)題、尺寸和圖標(biāo):
//設(shè)置標(biāo)題
primaryStage.setTitle("My JavaFX App");
//設(shè)置寬度
primaryStage.setWidth(800);
//設(shè)置高度
primaryStage.setHeight(600);
//設(shè)置圖標(biāo)
primaryStage.getIcons().add(new Image("icon.png"));
JavaFX提供了多種布局管理器,以便更好地組織Stage中的UI組件。例如,使用VBox或HBox(后面會(huì)陸續(xù)解釋這些布局)可以輕松實(shí)現(xiàn)垂直或水平排列的布局。同時(shí),我們可以通過(guò)CSS樣式表或編程方式自定義Stage的外觀,以滿足應(yīng)用程序的設(shè)計(jì)需求。
Stage的生命周期包括初始化、啟動(dòng)和停止階段。在初始化階段,Stage的構(gòu)造函數(shù)和init方法被調(diào)用。在啟動(dòng)階段,start方法是主要入口點(diǎn),負(fù)責(zé)創(chuàng)建Stage的用戶界面。停止階段,stop方法被調(diào)用,用于清理資源和執(zhí)行必要的關(guān)閉操作,之前的文章中有介紹生命周期。
initStyle 方法:
void initStyle(StageStyle style)
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class App extends Application {
public static void main(String[] args) {
launch(args); // 程序入口
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("My JavaFX App");
primaryStage.setWidth(800);
primaryStage.setHeight(600);
//第一個(gè)和第5個(gè)最常用
primaryStage.initStyle(StageStyle.DECORATED);//默認(rèn)窗口
// primaryStage.initStyle(StageStyle.TRANSPARENT);//透明窗口
// primaryStage.initStyle(StageStyle.UNDECORATED);//透明窗口
// primaryStage.initStyle(StageStyle.UNIFIED);//無(wú)頂部裝飾條
// primaryStage.initStyle(StageStyle.UTILITY);//無(wú)最小化最大化按鈕
primaryStage.show();
}
}
StageStyle.DECORATED默認(rèn)窗口
StageStyle.UTILITY無(wú)最小化最大化按鈕
setResizable 方法:
void setResizable(boolean resizable)
setTitle 方法:
void setTitle(String title)
setWidth 和 setHeight 方法:
void setWidth(double width)
void setHeight(double height)
close 方法:
void close()
isShowing 方法:
setIconified 方法:
void setIconified(boolean value)
toFront 方法:
void toFront()
toBack 方法:
void toBack()
setFullScreen 方法:
void setFullScreen(boolean value)
setFullScreenExitKeyCombination 方法:
void setFullScreenExitKeyCombination(KeyCombination keyCombination)
setOnCloseRequest 方法:
void setOnCloseRequest(EventHandler<WindowEvent> eventHandler)
以下是一個(gè)簡(jiǎn)單的JavaFX代碼示例,演示了 Stage 類的一些方法及其注釋說(shuō)明。請(qǐng)注意,這只是一個(gè)基本的示例,實(shí)際使用時(shí)可能需要根據(jù)應(yīng)用程序需求進(jìn)行更詳細(xì)和復(fù)雜的實(shí)現(xiàn)。
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.stage.WindowEvent;
public class StageDemo extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// 設(shè)置窗口標(biāo)題
primaryStage.setTitle("Stage Demo");
// 設(shè)置窗口大小
primaryStage.setWidth(400);
primaryStage.setHeight(300);
// 創(chuàng)建場(chǎng)景
Scene scene=new Scene(new VBox(), 400, 300);
// 設(shè)置場(chǎng)景到窗口
primaryStage.setScene(scene);
// 添加按鈕用于顯示另一個(gè)窗口
Button openNewStageButton=new Button("Open New Stage");
openNewStageButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
openNewStage();
}
});
// 添加按鈕用于最小化窗口
Button minimizeButton=new Button("Minimize");
minimizeButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
primaryStage.setIconified(true);
}
});
// 添加按鈕用于設(shè)置全屏
Button fullscreenButton=new Button("Toggle Fullscreen");
fullscreenButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
primaryStage.setFullScreen(!primaryStage.isFullScreen());
}
});
// 添加按鈕用于設(shè)置模態(tài)窗口
Button modalButton=new Button("Open Modal");
modalButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
openModalStage();
}
});
// 添加文本框用于設(shè)置窗口標(biāo)題
TextField titleTextField=new TextField("New Title");
Button setTitleButton=new Button("Set Title");
setTitleButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
primaryStage.setTitle(titleTextField.getText());
}
});
// 設(shè)置窗口關(guān)閉事件處理程序
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
System.out.println("Stage is closing");
}
});
// 將組件添加到布局
VBox rootLayout=(VBox) scene.getRoot();
rootLayout.getChildren().addAll(
openNewStageButton,
minimizeButton,
fullscreenButton,
modalButton,
titleTextField,
setTitleButton
);
// 顯示主窗口
primaryStage.show();
}
// 打開新的窗口
private void openNewStage() {
Stage newStage=new Stage();
newStage.setTitle("New Stage");
newStage.setWidth(300);
newStage.setHeight(200);
Scene newScene=new Scene(new VBox(), 300, 200);
newStage.setScene(newScene);
// 設(shè)置新窗口為模態(tài)窗口
newStage.initModality(Modality.APPLICATION_MODAL);
// 添加關(guān)閉按鈕
Button closeButton=new Button("Close");
closeButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
newStage.close();
}
});
// 將按鈕添加到布局
VBox rootLayout=(VBox) newScene.getRoot();
rootLayout.getChildren().add(closeButton);
// 顯示新窗口
newStage.show();
}
// 打開模態(tài)窗口
private void openModalStage() {
Stage modalStage=new Stage();
modalStage.setTitle("Modal Stage");
modalStage.initStyle(StageStyle.UTILITY);
modalStage.setWidth(250);
modalStage.setHeight(150);
Scene modalScene=new Scene(new VBox(), 250, 150);
modalStage.setScene(modalScene);
// 設(shè)置新窗口為模態(tài)窗口
modalStage.initModality(Modality.APPLICATION_MODAL);
// 添加關(guān)閉按鈕
Button closeButton=new Button("Close");
closeButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
modalStage.close();
}
});
// 將按鈕添加到布局
VBox rootLayout=(VBox) modalScene.getRoot();
rootLayout.getChildren().add(closeButton);
// 顯示新窗口
modalStage.showAndWait();
}
}
樣例代碼
這個(gè)示例演示了如何使用 Stage 類的一些方法,包括設(shè)置標(biāo)題、大小、場(chǎng)景、關(guān)閉事件處理程序、最小化、全屏、打開新窗口以及模態(tài)窗口等。請(qǐng)根據(jù)實(shí)際需求進(jìn)行修改和擴(kuò)展。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。