`
lzchacker
  • 浏览: 25243 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Swing 毛玻璃

    博客分类:
  • java
 
阅读更多

关于Java如何在windows 7 32bit 实现毛玻璃透明

(2012-01-07 19:54:12)
标签:

杂谈

有图有真相!

关于Java如何在windows <wbr>7 <wbr>32bit <wbr>实现毛玻璃透明

首先学会在JAVA中调用DLL

编译环境:CMD、VS2010.(eclipse无法通过编译!)

本人用代码讲解!

以下是JAVA代码:

第一步:

public class DLLtest {
 public native void displayshow();//用native声明方法
 static {                         //将加载DLL的函数代码放到静态模块中
  System.out.println("进入加载");
  System.loadLibrary("hurry");// 加载DLL文件,hurry既为DLL的名字
 }
 public static void main(String[] args) {
 
  new DLLtest().displayshow();//new出类并调用方法。
  }

}
第二步:到CMD下进行编译 也就是javac DLLtest.java

第三步:编译完后用javah 在编译成.h文件,也就是javah DLLtest

关于Java如何在windows <wbr>7 <wbr>32bit <wbr>实现毛玻璃透明

此时在你类的目录下会多出一个DLLtest.h文件。

关于Java如何在windows <wbr>7 <wbr>32bit <wbr>实现毛玻璃透明
第四步:

将.h文件放到VS2010的include的目录下,关于include目录在哪,自己可以用资源管理器右上角的搜索功能找,这里不多说。

第五步:

编写C++代码,用VS2010写DLL,具体如下:

打开VS2010 新建->项目->在左边选择Win32->Win32项目

名称随便输入例如hurry

然后会出现一个Win32应用程序向导,点下一步,选择DLL->完成!

C语言代码:

#include <Windows.h>
# include "DLLtest.h"

JNIEXPORT void JNICALL Java_DLLtest_displayshow(JNIEnv *env,jobject obj)
{
printf("FUCK!!!我终于TM成功了!!\n");
system("pause");
return;
}
关于Java如何在windows <wbr>7 <wbr>32bit <wbr>实现毛玻璃透明

在解决方案的资源管理器中右键你的CPP文件->属性->找到预编译头->在预编译头中选择不适用预编译头。

最后点编译。

第六步:

将生成的DLL文件放到类的目录中

最后一步:

运行!

关于Java如何在windows <wbr>7 <wbr>32bit <wbr>实现毛玻璃透明

我说的你们听明白了么?

如果听明白了,那么实现毛玻璃的方法就不难了,只简单的调用WIN API而已

先看我JAVA代码

import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class AeroTest extends JFrame{
  public native void AeroShow();
 static {
  System.out.println("进入加载");
  System.loadLibrary("AeroCall");
 }

 JPanel redPanel=new JPanel();
 JButton testButton =new JButton("测试组件:按钮");
 public AeroTest(){
  redPanel.add(testButton);
  redPanel.setBackground(Color.red);//务必将面板设置成红色
  this.setTitle("毛玻璃测试");//必须设置标题头
  this.setSize(800,500);
  this.getContentPane().add(redPanel);
  this.setVisible(true);
 }

 public static void main(String[] args) {
  AeroTest AeMain=new AeroTest();
  AeMain.AeroShow();

 }

}

以下是C语言代码


#include <jni.h>
#include "AeroTest.h"
#include <stdio.h>
#include <iostream>
#include <Windows.h>
#include <WinUser.h>
#include <Uxtheme.h>
#include <dwmapi.h>
#pragma comment (lib, "Uxtheme.lib")
#pragma comment (lib, "dwmapi.lib")
using namespace std;
JNIEXPORT void JNICALL Java_AeroTest_AeroShow(JNIEnv *env,jobject obj)
{
HWND hwnd = FindWindow(NULL,L"毛玻璃测试");  //查找 标题为 "毛玻璃测试"的对话框

SetWindowLong(hwnd,GWL_EXSTYLE,
GetWindowLong(hwnd,GWL_EXSTYLE)^0x80000);
SetLayeredWindowAttributes(hwnd,0x0000ff, 255, LWA_ALPHA | LWA_COLORKEY);  //设置透明

MARGINS mar={-1};
DwmExtendFrameIntoClientArea(hwnd, &mar);   //毛玻璃范围

return;
}

 

其实实现的方法很简单,在JAVA中将面板的颜色设置成红色并设置窗口标题,C语言的代码的意思是找到窗口,然后把红色的地方全部变成毛玻璃透明~~~

就是这么简单~懂了么?


 



分享到:
评论

相关推荐

    java swing 毛玻璃实现

    本教程将专注于一个特定的主题——"毛玻璃效果"(也称为模糊背景或亚克力效果)在Java Swing中的实现。 毛玻璃效果是一种设计趋势,它在界面上创建半透明、模糊的背景,以突出显示前景元素。在Java Swing中,我们...

    实时、动态的毛玻璃(aero)效果,javaSwing 实现的,用的是高斯模糊算法

    实时、动态的毛玻璃效果,javaSwing 实现的,ios7的毛玻璃效果可以让用户的注意力集中到他需要注意的地方,本demo根据之前写的例子改变而来,实现了实时、动态的毛玻璃效果,希望给有需要的人一点帮助,因为花了点...

    高斯模糊(也叫毛玻璃效果)需要的库文件和jar包

    在Android开发中,实现“高斯模糊”或“毛玻璃效果”是一种常见的视觉设计手法,它能够为用户界面增添一种柔和且神秘的美感。这种效果通常用于背景图像,以突出前景元素,提升整体UI的层次感。为了在Android应用中...

    java swing 实现ios7毛玻璃效果,高斯模糊算法

    用java swing实现ios7的毛玻璃效果,毛玻璃效果实则是图片的高斯模糊滤镜处理。本demo非常简易的实现可调模糊的半径和可选填充蒙上一层透明颜色。

    Swing透明切,美观啊(源码奉送)

    * 以前或许大家对一个UI组件是否透明没有那么关心,但是自从Vista的毛玻璃出现后, * UI透明就成了大家非常关注的一个话题,于是Java阵营开始了铺天盖地的讨论如何实现透明的效果, * 但是很不幸的是无论组件...

    yaya_java_mine7ya_

    在这个项目中,开发者可能使用了Java语言以及Android SDK来构建一个应用,该应用提供了多种图像处理效果,如毛玻璃效果、区块整体涂鸦、马赛克方格以及跟随手指涂鸦的功能。 描述中提到,这个安卓应用是针对图片...

    计算器总体设计1

    - **NEON**:Win10的毛玻璃设计风格。 - **Material**和**Light**:Win10流畅设计的两个关键元素。 4. **需求概述** 计算器需具备基础运算和科学计算功能,支持长串公式输入的自动解析。为了提高用户体验,界面...

Global site tag (gtag.js) - Google Analytics