zoukankan      html  css  js  c++  java
  • 动态更改按钮图像

    图1.1我的简单窗口 介绍 我喜欢Flash按钮,因为您可以根据情况轻松地更改按钮的属性,比如鼠标移动或单击。您可以在Java中轻松地做到这一点。 许多人使用JButton中的这些方法加载不同的图形:setIcon(icon)、setRolloverIcon(icon)和setPressedIcon(icon)。对我来说,它是有效的,但不是很有效。我将向您展示如何在运行时使用Java图形处理映像。 Java Swing是一种桌面技术。如果使用得当,它可以对上传的图像进行硬件加速。我不会在这里介绍硬件加速的图像,因为我认为您可以了解它。 图2.1状态 可以看到,按钮的初始状态有点透明。当您将鼠标放在它上面时,图像将变得更加可见。当点击时,图像将移动x=1px和y=1px。 使用的代码 本文包含的类名为MouseOverButton。 MouseOverButton类中最重要的方法是JButton createButton(字符串路径名,字符串工具提示)和BufferedImage createCompatibleImage(int w, int h, int transparancy)。 方法createCompatibleImage(w,h, transparency)返回一个BufferedImage,该BufferedImage支持指定的透明度,并具有与此GraphicsConfiguration兼容的数据布局和颜色模型。 隐藏,复制Code

    /**
           Creates an image compatible with the current display.
        */
        public BufferedImage createCompatibleImage(int w, int h, int transparancy)
        {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            return gc.createCompatibleImage(w, h, transparancy);
        }

    我们将制作三个图像。第一个图像是我们加载的图像。当鼠标光标在图像上时使用此图像。 第二个图像是半透明的默认图像。这是初始状态的像。 隐藏,复制Code

    Image image = createCompatibleImage(w, h, Transparency.TRANSLUCENT);
    Graphics2D g = (Graphics2D)image.getGraphics();
            Composite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .5f);
    g.setComposite(alpha);
    //drawImage(image, x, y, image to be notified)
    
    g.drawImage(imageRollover.getImage(), 0,0, null);
    g.dispose();
    ImageIcon iconDefault = new ImageIcon(image);

    我们将alpha设置为0.5,即图像总可见性的50%(如果alpha=1.0f,图像完全可见)。然后,在将图像绘制到屏幕上之前,设置图像的组合。 第三幅图像是完全可见的。我们将通过设置x=1和y=1(将图像偏移几个像素)来绘制图像,这样就会产生按钮被按下的效果。 隐藏,复制Code

    //make a pressed image
    
    image = createCompatibleImage(w, h, Transparency.TRANSLUCENT);
    g = (Graphics2D)image.getGraphics();
    g.drawImage(imageRollover.getImage(),1,1, null);
    g.dispose();
    ImageIcon iconPressed = new ImageIcon(image);

    结论 我想这就是我能告诉你的关于我的项目的全部。其余内容是不言自明的,或者您可以在Java文档中了解到,因为它们都很简单。如果您有任何疑问或认为需要我详细说明,请不要犹豫与我联系。 你可以更有创造力;你可以用它来让你的程序更具交互性,看起来更酷。 免责声明 我用于本教程的图像是从CodeProject本身下载的。 参考 Brackeen, d .(2004)。用Java开发游戏。新车手出版。 本文转载于:http://www.diyabc.com/frontweb/news509.html

  • 相关阅读:
    C#和C++除了语法上的差别外,还有什么其他的区别
    各种指针的的概览及造成原因
    批量操作Tomcat Shell脚本
    pi币pinetwork安装注册教程中文详细版【实操有效】
    Oracle分析函数
    Logger.Xml
    使用Redis / Zookeeper作为分布式锁的一些注意点
    Seata Server配置文件
    .gitignore忽略target无效
    MySql隔离级别:RU / RC / RR / S + 脏读 / 不可重复读 / 幻读 / 可重复读
  • 原文地址:https://www.cnblogs.com/Dincat/p/13450662.html
Copyright © 2011-2022 走看看