利用JNA实现透明(图片透明,自定义不规则多边形透明)
自Windows的透明技术出现以后,它的漂亮的外观一直为很多程序员所爱.目前jdk 6 u 10已经把透明这块相应的包加进来了,需要的程序员可以去下载了.这里就介绍下怎么使用JNA实现透明.先看下面的代码吧:/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.lgh.lucency;import com.lgh.pic.Pic;import com.sun.jna.examples.WindowUtils;import java.awt.BorderLayout;import java.awt.Graphics;import java.awt.Polygon;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.ToolTipManager;/** * * @author lgh */public class LucencyTest2 { public LucencyTest2() { this.initJFrame(); } public static void main(String[] args) { ToolTipManager.sharedInstance().setInitialDelay(0); ToolTipManager.sharedInstance().setLightWeightPopupEnabled(true); new LucencyTest2(); } private void initJFrame() { final JFrame jf = new JFrame("透明"); jf.setUndecorated(true); jf.setSize(400, 300); jf.setLayout(new BorderLayout()); JPanel jp = new JPanel() { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(Pic.statResult, 0, 0, jf); } };// jp.setToolTipText("<html><center><font color=blue size=+2>" +// "ToolTipDemo.moo" + "</font></center></html>");// jp.setToolTipText("<html><center><font face=AvantGarde size=+1 color=white>" +// ("ToolTipDemo.got_milk") + "</font></center></html>"); jf.add(jp, BorderLayout.CENTER); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setLocationRelativeTo(null); //移动 MouseMotionUtil mmu = new MouseMotionUtil(); mmu.addMouseMotionListener(jf, jp); //透明 //1.根据图片来透明// WindowUtils.setWindowAlpha(jf, 0.01F);// WindowUtils.setWindowMask(jf, new ImageIcon(Pic.statResult)); //2.根据shape外观来进行做形状 //2.1简单的圆// RoundRectangle2D.Float mask = new RoundRectangle2D.Float(0, 0, jf.getWidth(),jf.getHeight(), 100, 100);// WindowUtils.setWindowMask(jf, mask); //2.2另一种不规则外形 Polygon polygon = new Polygon(); polygon.addPoint(200, 300); polygon.addPoint(400, 0); polygon.addPoint(0, 0); WindowUtils.setWindowMask(jf, polygon); jf.setVisible(true); }} 根据图片透明的效果如下:
http://www.agoit.com/upload/attachment/95346/39a90524-551e-30c2-96a9-784f0cf35bfd.png
根据四边形透明的如下:
http://www.agoit.com/upload/attachment/95344/71f2d115-4697-35a0-a94b-e03923b3ed57.png
根据三角形的透明的效果如下:
http://www.agoit.com/upload/attachment/95342/56ff5fcf-4041-3d77-86f7-e87aeeb97b05.png
页:
[1]