`

不规则图形与半透明图形

阅读更多

使用sun提供com.sun.awt.AWTUtilities类.

以下说明的三个API均是应用于窗口的函数.

 

一.半透明窗口

com.sun.awt.AWTUtilities.setWindowOpacity(Window window,float opacity);

设定窗口的透明度.包括窗口中的组件.

window:指定窗口对象.

opacity:指定透明度.float类型.0为完全透明,1为不透明.其他为半透明.

 

二.图形窗口

com.sun.awt.AWTUtilities.setWindowShape(Window window,Shape shape );

window:指定窗口对象.

shape:指定窗口图形.

 

三. 逐像素 α 显示

com.sun.awt.AWTUtilities.setWindowOpaque( Window window , boolean isOpaque );

setWindowOpaque方法被用于窗口的逐像素阿尔法支持。

window:指定窗口对象.

isOpaque:窗口是否是透明的(不透明为true,或半透明为false)

 

说明:

window参数定义需要作用的的窗口。注意,这个窗口必须是代表一个兼容图形配置的窗口。更多图形配置的信息,参看Determining the Support for a Desired Effect。同时注意, 如果窗口处于全屏模式且背景色的α <1.0,这个方法将会抛出IllegalComponentStateException异常,如果不支持像素级半透明且α 值小于1.0,将会抛出UnsupportedOperationException异常。

isOpaque参数定义了窗口是否是透明的(不透明为true,或半透明为false)。一旦窗口变为全透明(isOpaque为false),绘画子系统开始遵从单个像素的α值。如果一个像素的α=0,则像素完全透明;如果像素的α=255,则像素完全不透明。0<α<255,像素半透明。

 

注意1: 主窗口必须是不能最大化的窗口.

 

注意2: 若要设置窗口背景为半透明的.则要设置窗口背景颜色的α值.但是普通的ContentPane貌似不支持α值的设定.

所以需要我们自己写一个Pane来当作ContentPane.

public class MyContentPane extends JPanel{
    public MyContentPane(){}
    //重绘组件
    public void paintComponent(Graphics g){
        //用Graphics2D 实现阿尔法通道
        Graphics2D g2d=(Graphics2D)g;

        //带阿尔法通道的颜色255,0,0为RGB颜色,100为阿尔法值.
        Paint p=new Color(255,0,0,100);
        

        //设置Graphics2D 的颜色
        g2d.setPaint(p);
        //这里也可以用setColor,   setPaint与setColor等效.
        //g2d.setColor(new Color(255,0,0,100));

        //用设定的颜色绘制组件颜色
        g2d.fillRect (0, 0,this.getWidth (),this.getHeight ());  
	}
}
 

主窗口JFrame用setContentPane(myContentPane)重新设置主窗口的ContentPane.

在主窗口不能最大化的前提下,使用setWindowOpaque()方法.即可实现按每个像素的半透明效果.

 

注意3: 若窗口中的组件颜色也设置了阿尔法值,也会有相应的半透明效果.

 

 

相关参考:

http://www.oracle.com/technetwork/articles/javase/translucent-shaped-windows-139324.html

http://developer.51cto.com/art/201006/207199.htm

分享到:
评论

相关推荐

    不规则图形区域读取.

    在计算机编程领域,尤其是涉及到图形用户界面(GUI)开发时,"不规则图形区域读取"是一个关键的技术点。这个概念通常与高级图形处理、窗口定制以及图像分析有关。不规则图形区域读取的主要目的是从屏幕或者特定的...

    带半透明的不规则窗口

    在Windows编程领域,创建带有半透明效果的不规则窗口是一项技术挑战,特别是在VC++环境下。本文将深入探讨如何使用`UpdateLayeredWindow()`函数来实现这样的功能,以及它在实际应用中的价值。 首先,让我们理解“不...

    android不规则图形点击处理

    2. 在这个类中,我们需要绘制不规则图形。可以使用`Canvas`和`Paint`对象来实现。例如,我们可以通过Path对象定义一个不规则的路径,然后调用`canvas.drawPath(path, paint)`来绘制。 ```java public class ...

    C#半透明控件

    半透明控件可以是任何形状,包括不规则形状,以实现更具创新性的用户界面。以下是对这个主题的详细讨论: 1. **半透明的概念**:半透明,也称为Alpha混合,是指一个物体部分透明,允许其背后的元素透过。在C#中,...

    不规则窗口绘制。(png图片透明部分不会显示)

    在VS2008中,可以使用GDI+的API进行图形绘制,例如CreateBitmap、DrawImage等函数,来实现不规则窗口的背景图片设置和透明处理。 至于"dll和头文件",这通常是指开发者将某些功能封装为动态链接库(DLL),并提供...

    c#不规则半透明窗体.rar

    在C#编程中,创建不规则形状且具有半透明效果的窗体是一项高级技术,它涉及到Windows API调用和自定义绘图。本教程将深入探讨如何实现这样的功能。 首先,要创建一个不规则形状的窗体,我们需要利用.NET Framework...

    Qt实现半透明不规则窗体示例

    总的来说,Qt通过其强大的图形系统和灵活的API,让开发者能够轻松实现半透明和不规则形状的窗口。结合`QWindow`、`QWidget`、`QPainter`以及`QPainterPath`等类,可以创建出极具创新性和吸引力的用户界面。

    不规则形状的透明对话框

    不规则形状的对话框通常用于突出显示特定信息或功能,而透明度则允许对话框与背景内容融合,创造更自然、更沉浸式的效果。以下是对这个主题的详细探讨: 首先,我们需要理解“不规则形状”。在计算机图形学中,不...

    MFC半透明窗口

    本篇文章将详细讲解如何在MFC应用中实现半透明窗口,以及利用GDI+来绘制不透明文字。 首先,我们要理解什么是半透明窗口。在Windows系统中,一个半透明窗口允许底层窗口的部分可见,使得用户可以同时看到前景和背景...

    DUULIB异形窗口半透明窗体

    不同于传统的矩形窗口,异形窗口允许开发者自定义窗口的形状,创造出独特的视觉效果,比如圆形、不规则形状等,这在游戏、艺术应用或个性化软件中尤其常见。在DUILIB中,实现异形窗口通常涉及到窗口区域的裁剪和绘制...

    C++ Builder不规则图像透明贴图(位图的透明显示)三种方法及简单动画CB10.2 v1.5(资源嵌入)项目源代码

    C++ Builder提供了对Alpha通道的支持,允许创建半透明效果和复杂的不规则透明区域。 2. **不规则图像**:不规则图像通常指的是具有复杂形状的图像,如带有孔洞或者边缘不规则的图像。在C++ Builder中,处理这类图像...

    PNG_DEMO.rar_demo_usa.png_png_不规则 窗体_透明_透明 png

    在本示例"PNG_DEMO.rar"中,我们关注的是"不规则窗体"与"透明"效果的实现。 不规则窗体,通常是指非矩形形状的窗口或图形元素,它可以是圆形、多边形或其他自定义形状。在GUI设计中,这种设计可以增加视觉吸引力,...

    不规则窗口 此代码实现了不规则窗口 以及任意修改窗口的透明度 以及不规则窗口进行的动画

    在IT领域,不规则窗口和窗口特效是许多高级应用程序中常见的功能,特别是在桌面环境和图形用户界面(GUI)设计中。这些技术提升了用户体验,使软件更加吸引人且富有交互性。下面将详细介绍“不规则窗口”、“窗口...

    纯CSS3绘制各种不规则图形图标样式特效源码.zip

    这个压缩包“纯CSS3绘制各种不规则图形图标样式特效源码.zip”显然是一个包含了一系列利用CSS3技术创建不规则图形和图标样式的资源集合。下面将详细介绍CSS3中的关键知识点以及如何用它们来创建这些效果。 1. **...

    透明和不规则

    - **透明窗口**:`AWTUtilities.setWindowOpacity(Window, float)`方法允许开发者轻松调整窗口的不透明度,从而创建半透明效果。 - **不规则窗口**:`AWTUtilities.setWindowShape(Window, Shape)`方法结合形状对象...

    C#透明窗体演示, 不规则窗体

    总结来说,通过结合使用C#的`Opacity`属性、`Region`属性以及图形变换技术,我们可以创建出具有透明背景和不规则形状的窗体。在学习和实践中,你可以根据需求进一步定制窗体的行为,如添加动画效果,或者处理窗体与...

    VB 不规则窗体

    例如,可以画一个心形、星形或其他不规则图形作为窗体的边界。 3. **鼠标消息处理**:不规则窗体需要处理鼠标事件,如`WM_NCHITTEST`消息,来确保鼠标点击在窗体的非矩形部分也能正确响应。这需要重写`...

    透明窗口与不规则窗口

    此外,还可以利用`SetLayeredWindowAttributes`函数来调整窗口的透明度,甚至实现半透明效果。透明窗口常用于创建悬浮提示、工具提示等效果,或者用于实现某些高级UI设计。 不规则窗口(Irregular Window)则是指...

    Python实现不规则图形填充的思路

    在Python编程中,实现不规则图形的填充是一个挑战,但可以通过理解几何原理和利用数学库,如`matplotlib`,来解决。本篇文章将探讨如何利用“点动成线,线动成面”的概念来填充一个特定的不规则图形——扇子。 首先...

    JAVA创建不规则窗口

    对于“JAVA创建不规则窗口”这一主题,我们主要关注的是如何利用Swing实现非标准形状的窗口,以及如何创建半透明效果的窗口。这是一项高级特性,通常需要对图形用户界面(GUI)编程有深入的理解。 首先,要创建不...

Global site tag (gtag.js) - Google Analytics