`
行者买刀
  • 浏览: 194222 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

利用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);
    }
}

 根据图片透明的效果如下:

   

根据四边形透明的如下:

  


 
 

根据三角形的透明的效果如下:

  

 
 

 

  • 大小: 68.6 KB
  • 大小: 77 KB
  • 大小: 84.9 KB
分享到:
评论

相关推荐

    透明和不规则

    本文基于给定文件信息,深入剖析了Java Swing中实现透明和不规则窗口的历史背景、挑战及解决方案,以及Java SE 6 Update N(Consumer JRE)中引入的新功能。 #### 跨平台UI工具箱的局限性与挑战 跨平台UI工具箱如...

    JNA实现回调及其他

    - **自定义映射**:如果默认的类型映射不满足需求,用户可以自定义映射规则,通过`com.sun.jna.NativeType`和`com.sun.jna.Structure`等类进行扩展。 - **内存管理**:JNA负责Java和本地代码之间的内存管理,包括...

    jna 实现回调函数 code.zip

    jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip

    jna-example.jar包

    总结,jna-example.jar是Java开发者实现高级图形界面功能的有力工具,通过JNA库,我们可以轻松地利用操作系统底层API,实现窗口透明和不规则形状显示,从而打造出更具吸引力和个性化的应用程序。同时,掌握JNA的使用...

    jna和examples的jar包

    `examples.jar` 包含的示例可能涵盖了上述功能的使用,帮助开发者理解如何利用 JNA 实现特定功能,例如在给定的场景下,JFrame 的透明和不规则形状的实现。 对于 JFrame 的透明度,JNA 可能被用来调用操作系统级别...

    jna和examples.zip

    2. 不规则形状JFrame:JNA可以调用GDI32库中的函数,配合Shape类来实现自定义窗口形状。例如,使用CreateRoundRectRgn创建一个矩形区域,并设置为窗口的形状。 ```java public static HRGN createRoundRectRgn(int ...

    Swing 实现透明窗体

    这使得开发者能够创建具有不规则形状和透明度的窗口。Swing利用了这一点,允许我们设置JFrame或JWindow的透明度。 3. **`setOpaque(false)`方法**:为了使Swing组件变得透明,你需要调用组件的`setOpaque(false)`...

    JAVA利用JNA调用DLL

    2. **错误处理**: JNA默认不提供错误处理机制,如果本地库函数返回错误码,你可能需要自定义错误处理逻辑。 3. **内存管理**: 对于复杂的数据结构,JNA可能会涉及内存分配和释放。你需要确保正确地管理这些资源,以...

    jna.rar_jna_jna.jar_jna文件

    JNA通过动态链接库(DLLs on Windows,shared libraries on Unix/Linux)实现了这一点,极大地简化了Java应用程序与本地资源的交互。`jna.jar`文件是JNA库的核心组件,包含了所有必要的类和资源,使得开发者可以在...

    android studio 上实现JNA

    在Android开发环境中,Java Native Access (JNA) 是一个强大的库,它允许Java代码与本地操作系统功能进行交互,而无需编写C代码或...理解JNA的工作原理以及如何有效地利用它,是提升Android应用功能的重要途径之一。

    Java实现获取窗口句柄并操作窗口jna-4.4.0

    在Java中,直接操作窗口句柄通常是不可能的,但借助JNA,我们可以调用Windows API来实现这些功能。 首先,我们需要引入JNA库,可以在项目中添加jna-4.4.0.jar依赖。这个版本的JNA包含了对多种操作系统API的支持,...

    jna整合包-jna4.5.0+jna4.0.0.rar

    总的来说,JNA作为一个强大的库,简化了Java与本地库交互的过程,使得开发者可以在Java环境中充分利用系统资源,实现更丰富的功能。在使用过程中,需要注意版本间的差异,以及正确配置和管理本地库的依赖。同时,...

    利用jna在java下调用c语言库文件

    JNA通过映射Java方法到本地函数来实现调用,这得益于其内建的类型映射系统。Java中的数据类型会自动转换为对应的C语言数据类型,使得接口调用变得简单。 在描述中提到,我们有一个C++编写的动态链接库(DLL或SO文件...

    JNA所需要的jar包

    Java Native Access(JNA)是Java平台上的...在实际开发中,根据项目的具体需求,合理利用JNA提供的功能,可以有效地实现Java与本地系统的交互,提升开发效率。同时,需要注意正确管理和使用JNA库,以避免潜在的问题。

    jna-3.3.0 & jna-3.3.0-platform

    综上所述,`jna-3.3.0.jar`和`jna-3.3.0-platform.jar`是Java开发中调用本地资源的重要工具,它们提供了一种简便的方式让Java程序能够直接利用操作系统的能力,而无需深入学习C/C++编程。通过理解JNA的工作原理和...

    jna jar实现java调用dll

    JNA通过动态加载库和映射库函数来实现这一功能,极大地简化了Java与C/C++等本地代码之间的交互。在本文中,我们将深入探讨如何使用JNA jar包来实现Java调用dll文件。 首先,理解JNA的工作原理至关重要。JNA依赖于...

    jna-platform-4.3.0-API文档-中文版.rar

    通过阅读和理解JNA Platform 4.3.0的API文档,开发者可以有效地利用这个库来访问和控制本地系统资源,实现更高效的Java程序。无论是在桌面应用开发、系统集成还是自动化工具中,JNA Platform都是一种强大且灵活的...

    jna3.2.1.rar

    10. **错误处理**:JNA默认不进行错误检查,但在必要时,开发者可以自定义错误处理策略,例如通过检查返回值或捕获异常。 JNA 3.2.1版本的源代码包含了解析、映射和调用本地函数的详细实现,这对于深入理解JNA的...

    JNA方式实现Java调用dll的必用jar包

    JNA提供了一种简单的方式来调用C函数和其他本地库,使得Java开发者能够利用本地系统的功能,比如操作系统APIs,硬件接口等,而无需深入到C/C++的世界。 标题"JNA方式实现Java调用dll的必用jar包"指的是使用JNA库来...

Global site tag (gtag.js) - Google Analytics