整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Glass2k - 讓 Windows 窗口變透明的

          Glass2k - 讓 Windows 窗口變透明的小工具

          lass2K 是一款可以讓 Windows 窗口 透明 的小工具( 僅 26.1KB 大小 ),單文件程序免安裝。打開后即可看到 下方圖示 的程序界面,底部 Ok / Hide Me 按鈕可以隱藏工具界面,可在 任務欄 托盤內再次打開;Unload Glass2k 按鈕為 退出 按鈕,如果不需要使用時點擊即可關閉工具。

          該工具的上手使用也非常簡單,工具內的 Help / Documentation 提示內已說明 使用方法。運行 Glass2k 后點擊 OK / Hide Me 隱藏工具,打開任意需要進行透明化調整的窗口內同時按快捷鍵 Ctrl + Alt + 1~9 范圍內的任意數字,數值越小越透明,數值越大越清晰。Ctrl + Alt + 0 則是恢復默認。

          最后小編以 Everything 為例,逐級調整 透明效果。有需要 上班摸魚同時閱覽 多份文件時可以使用該工具。不過較為遺憾的是該工具不能對透明化窗體進行 置頂,因此無置頂功能的軟件則需要借助于第三方工具實現。

          為解決 窗口置頂 的問題,小編再分享一款 窗口置頂 工具給大家,打開后選擇需要置頂的 窗體 按默認的 F7 熱鍵置頂即可完成操作,非常的簡單實用,有需要的可以到 網盤 內下載兩款工具的合集壓縮包進行體驗。

          資源獲取:私信回復關鍵詞「 0724 」獲取下載地址,或關注公眾號 【 拾集 Plus 】( shijiplus )回復相同關鍵詞獲取。頭條消息回復不及時多請諒解,如有任何問題留言后耐心等待回復,感謝諒解。

          規則窗體的實現有兩種方式:

          一種是設置窗體的掩碼圖像;

          另一種是設置窗體背景透明,然后重寫其繪圖函數,將背景圖繪制上去。

          第一種方式

          首先要準備兩張圖像,一張是要顯示的圖像,另一張是第一張圖的掩碼圖像,黑色部分是你的窗體要顯示的部分,如圖:


          具體實現的關鍵代碼如下:

          //IrregularForm1.h

          IrregularForm1::IrregularForm1(QWidget *parent) :

          QWidget(parent)

          {

          setWindowFlags(Qt::FramelessWindowHint);//設置窗體無邊框

          //設置背景

          QPixmap pixmap(":/pic.png");

          QPalette palette;

          palette.setBrush(backgroundRole(), QBrush(pixmap));

          setPalette(palette);

          //設置窗體的掩碼圖像,摳除圖像的白色區域實現不規則窗體

          QBitmap bitmap(":/picmask.png");

          setMask(bitmap);

          }

          運行效果不是特別完美,應該是我的掩碼圖像的問題,如圖:

          這種方式有一個問題,就是當你的圖像特別不規則的時候,會有很明顯的鋸齒出現。之前做過一個卡通圖像就出現這個問題,解決的辦法是使用下面的第二種方法。

          第二種方式

          只需要準備一張圖片,透明部分將不會顯示,支持半透明。我這里弄了一張背景透明,前景半透明的圖像,如圖:

          具體實現的關鍵代碼如下:

          //IrregularForm2.cpp

          IrregularForm2::IrregularForm2(QWidget *parent) :

          QWidget(parent)

          {

          this->setWindowFlags(Qt::FramelessWindowHint);//設置窗體無邊框

          this->setAttribute(Qt::WA_TranslucentBackground);//設置背景透明

          pic.load(":/IrregularPic.png");//加載圖像

          this->resize(pic.size());

          }

          //重寫繪圖事件

          void IrregularForm2::paintEvent(QPaintEvent *)

          {

          QPainter painter(this);

          painter.drawPixmap(0, 0, pic);//繪制圖像

          }

          效果截圖:

          說到這里,我們的不規則透明窗體雖然創建出來了,但是現在我們無法移動它了,現在我們就來實現左鍵拖動窗體的功能,首先要先聲明兩個變量,另外要重寫三個事件,代碼如下:

          //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);

          };

          關鍵的實現代碼(press變量在構造函數中初始化為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;

          }

          這樣就實現不規則窗體的移動功能了。

          【領QT開發教程學習資料,進Qt開發交流君羊:546183882 莬廢領取,先碼住不迷路~】

          JavaFX應用程序的核心組件之一是Stage,它是GUI應用程序的頂層窗口容器。在本文中,我們將深入探討JavaFX Stage的基礎知識、創建和設置、布局和設計、生命周期、高級功能以及與Scene的交互。了解Stage的這些方面對于構建豐富、交互性強的JavaFX應用程序至關重要。

          Stage的基礎知識

          Stage是JavaFX中表示窗口的主要類。它作為一個容器,包含了一個或多個Scene,每個Scene又包含了各種UI組件。Stage的創建是JavaFX應用程序的第一步,它為用戶提供了與應用程序交互的窗口。

          創建和設置Stage

          創建一個基本的Stage對象非常簡單:

          Stage primaryStage=new Stage();

          然后,我們可以設置Stage的一些基本屬性,例如標題、尺寸和圖標:

          //設置標題
          primaryStage.setTitle("My JavaFX App");
          //設置寬度
          primaryStage.setWidth(800);
          //設置高度
          primaryStage.setHeight(600);
          //設置圖標
          primaryStage.getIcons().add(new Image("icon.png"));

          Stage的布局和設計

          JavaFX提供了多種布局管理器,以便更好地組織Stage中的UI組件。例如,使用VBox或HBox(后面會陸續解釋這些布局)可以輕松實現垂直或水平排列的布局。同時,我們可以通過CSS樣式表或編程方式自定義Stage的外觀,以滿足應用程序的設計需求。

          Stage的生命周期

          Stage的生命周期包括初始化、啟動和停止階段。在初始化階段,Stage的構造函數和init方法被調用。在啟動階段,start方法是主要入口點,負責創建Stage的用戶界面。停止階段,stop方法被調用,用于清理資源和執行必要的關閉操作,之前的文章中有介紹生命周期。

          Stage的高級功能

          initStyle 方法:

          void initStyle(StageStyle style)
          • 設置 Stage 的窗口風格。
          • 參數 style:StageStyle 枚舉值,包括 StageStyle.DECORATED、StageStyle.UNDECORATED、StageStyle.TRANSPARENT 等。
          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);
                  //第一個和第5個最常用
                  primaryStage.initStyle(StageStyle.DECORATED);//默認窗口
          //        primaryStage.initStyle(StageStyle.TRANSPARENT);//透明窗口
          //        primaryStage.initStyle(StageStyle.UNDECORATED);//透明窗口
          //        primaryStage.initStyle(StageStyle.UNIFIED);//無頂部裝飾條
          //        primaryStage.initStyle(StageStyle.UTILITY);//無最小化最大化按鈕
                  primaryStage.show();
              }
          }


          StageStyle.DECORATED默認窗口


          StageStyle.UTILITY無最小化最大化按鈕

          setResizable 方法:

          void setResizable(boolean resizable)
          • 設置窗口是否可以調整大小。
          • 參數 resizable:true 表示可調整大小,false 表示不可調整大小。

          setTitle 方法:

          void setTitle(String title)
          • 設置窗口的標題。
          • 參數 title:窗口標題的字符串。

          setWidth 和 setHeight 方法:

          void setWidth(double width)
          void setHeight(double height)
          • 設置窗口的寬度和高度。
          • 參數 width 和 height:分別表示寬度和高度的雙精度值。

          close 方法:

          void close()
          • 關閉窗口。

          isShowing 方法:

          • 檢查窗口是否正在顯示。
          • 返回值:true 表示窗口正在顯示,false 表示窗口未顯示或已關閉。

          setIconified 方法:

          void setIconified(boolean value)
          • 最小化或還原窗口。
          • 參數 value:true 表示最小化,false 表示還原窗口。

          toFront 方法:

          void toFront()
          • 將窗口置于最前。

          toBack 方法:

          void toBack()
          • 將窗口置于最后。

          setFullScreen 方法:

          void setFullScreen(boolean value)
          • 設置窗口是否全屏。
          • 參數 value:true 表示全屏,false 表示取消全屏。

          setFullScreenExitKeyCombination 方法:

          void setFullScreenExitKeyCombination(KeyCombination keyCombination)
          • 設置用于退出全屏模式的鍵盤組合。
          • 參數 keyCombination:KeyCombination 對象。

          setOnCloseRequest 方法:

          void setOnCloseRequest(EventHandler<WindowEvent> eventHandler)
          • 設置窗口關閉請求事件的處理程序。
          • 參數 eventHandler:EventHandler 對象。

          樣例代碼

          以下是一個簡單的JavaFX代碼示例,演示了 Stage 類的一些方法及其注釋說明。請注意,這只是一個基本的示例,實際使用時可能需要根據應用程序需求進行更詳細和復雜的實現。

          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) {
                  // 設置窗口標題
                  primaryStage.setTitle("Stage Demo");
          
                  // 設置窗口大小
                  primaryStage.setWidth(400);
                  primaryStage.setHeight(300);
          
                  // 創建場景
                  Scene scene=new Scene(new VBox(), 400, 300);
          
                  // 設置場景到窗口
                  primaryStage.setScene(scene);
          
                  // 添加按鈕用于顯示另一個窗口
                  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);
                      }
                  });
          
                  // 添加按鈕用于設置全屏
                  Button fullscreenButton=new Button("Toggle Fullscreen");
                  fullscreenButton.setOnAction(new EventHandler<ActionEvent>() {
                      @Override
                      public void handle(ActionEvent event) {
                          primaryStage.setFullScreen(!primaryStage.isFullScreen());
                      }
                  });
          
                  // 添加按鈕用于設置模態窗口
                  Button modalButton=new Button("Open Modal");
                  modalButton.setOnAction(new EventHandler<ActionEvent>() {
                      @Override
                      public void handle(ActionEvent event) {
                          openModalStage();
                      }
                  });
          
                  // 添加文本框用于設置窗口標題
                  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());
                      }
                  });
          
                  // 設置窗口關閉事件處理程序
                  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);
          
                  // 設置新窗口為模態窗口
                  newStage.initModality(Modality.APPLICATION_MODAL);
          
                  // 添加關閉按鈕
                  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();
              }
          
              // 打開模態窗口
              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);
          
                  // 設置新窗口為模態窗口
                  modalStage.initModality(Modality.APPLICATION_MODAL);
          
                  // 添加關閉按鈕
                  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();
              }
          }
          


          樣例代碼


          這個示例演示了如何使用 Stage 類的一些方法,包括設置標題、大小、場景、關閉事件處理程序、最小化、全屏、打開新窗口以及模態窗口等。請根據實際需求進行修改和擴展。


          主站蜘蛛池模板: 久久国产视频一区| 亚洲av不卡一区二区三区| 国产精品视频一区二区三区无码| 国产精品无码AV一区二区三区| 一区二区三区四区免费视频| 欧美日韩国产免费一区二区三区| 国产一区中文字幕在线观看 | 国产伦一区二区三区高清| 国产精品一区二区av| 亚洲一区在线视频观看| 免费国产在线精品一区| 久久精品一区二区免费看| 大香伊蕉日本一区二区| A国产一区二区免费入口| 中文字幕av日韩精品一区二区 | 日韩视频一区二区三区| 日本无码一区二区三区白峰美| 蜜桃视频一区二区三区| 亚洲AV福利天堂一区二区三| 国产日韩综合一区二区性色AV| 亚洲AV无码一区二区二三区软件 | 制服丝袜一区二区三区| 中文字幕一区在线观看视频| 国产精品被窝福利一区 | 中文字幕国产一区| 成人精品一区二区户外勾搭野战 | 视频一区在线免费观看| 中文字幕一区二区三区在线观看| 日韩色视频一区二区三区亚洲| 久久国产免费一区二区三区| 国产在线一区二区杨幂| 亚洲国产一区在线观看| 亚洲美女高清一区二区三区| 亚洲综合一区国产精品| 国产伦精品一区二区三区| 搜日本一区二区三区免费高清视频| 国产一区二区三区久久精品| 日本精品一区二区三区在线视频一 | 无码一区二区三区视频| 日本精品一区二区三区在线视频一 | 日韩人妻无码一区二区三区 |