伊莉討論區

標題: 透明視窗內的不透明效果 [打印本頁]

作者: o.g.c    時間: 2013-5-18 10:40 AM     標題: 透明視窗內的不透明效果

本帖最後由 o.g.c 於 2013-5-18 12:36 PM 編輯

我建置了一個透明視窗
想在裡面畫點東西
透過Graphics可以畫上去
但是卻發現
筆跡也都是透明的

效果圖如下

[attach]90576203[/attach]
有甚麼辦法可以把它變不透明嗎
但是前提要視窗透明的


就是在透明視窗上顯示不透明的Graphisc



建立視窗的程式碼
  1. private static void createFrame() {
  2.         frame = new JFrame("ppt");
  3.         frame.setUndecorated(true);//全螢幕
  4.         com.sun.awt.AWTUtilities.setWindowOpaque(frame, false);
  5.         frame.setSize(screenSize);//設定size
  6.         frame.setAlwaysOnTop(true);//置頂

  7.         canvas = new JPanel() ;
  8.         canvas.setOpaque(false);
  9.         canvas.setPreferredSize(screenSize);
  10.         frame.add(canvas);
  11.         frame.pack();
  12.         frame.setVisible(true);
  13.         dbImage = canvas.createImage(screenSize.width, screenSize.height);
  14.         dbGraphics = (Graphics2D) dbImage.getGraphics();
  15. }
複製代碼



設置Graphics的程式碼
  1. private static void drawscreen() {
  2.         dbGraphics.setColor(Color.RED);//畫筆顏色
  3.         dbGraphics.setStroke(new BasicStroke(4.0f));//畫筆粗細
  4. //        dbGraphics.setComposite(java.awt.AlphaComposite.getInstance(
  5. //                java.awt.AlphaComposite.SRC_ATOP, 1f));
  6. }
複製代碼



作者: ddttdtxb    時間: 2013-5-18 11:27 AM

提供一個我在其它程式語言(flash)使用的方式,樓主試試可不可行。
加上去的東西本身是「不透明的」,Alpha 最大值。
但是背景填上「透明色」,那種顏色不重要,重要是顏色的 Alpha 是 0。

作者: o.g.c    時間: 2013-5-18 12:28 PM

ddttdtxb 發表於 2013-5-18 11:27 AM
提供一個我在其它程式語言(flash)使用的方式,樓主試試可不可行。
加上去的東西本身是「不透明的」,Alpha  ...

試過了不過沒辦法
而且這樣的話我圖片上沒辦法顯示筆跡
因為我是要在透明的視窗內顯示非透明的Graphics

晚點會補上程式碼的




歡迎光臨 伊莉討論區 (http://www40.eyny.com/) Powered by Discuz!