atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js

1. 图片按钮的效果总结 1

1.1. 按钮图片自动缩放的。 1

1.2. 不要边框,如果用自定义图片做按钮背景可以设为 false。 2

1.3. 异形按钮 2

1.4. 不绘制焦点 2

1.5. 鼠标经过时的图标 2

1.6. 选中时的图标 2

1.7. 禁用时显示的图标 2

1.8. 可能需要按钮半透明效果 2

2. 图片按钮的实现 2

2.1. 优先模式:button控件模式+backgroud属性 2

2.2. 其次模式2::lable/img控件实现 3

3. 非规则按钮的实现 3

3.1. 穿透颜色属性(推荐,方便) 3

3.2. 透明填空:png图片模式 3

3.3. setMask模式 3

3.4. 重绘button的paint事件(最不推荐,复杂) 3

3.5. Html热点 map模式 3

4. 鼠标越过动态图片切换实现 4

4.1. 优先模式::css模式... 4

4.2. 其次模式2:: 设置属性模式.. 4

4.3. 最后的模式3::写鼠标监听器 4

5. 半透明按钮的实现 4

5.1. 属性法,方便。推荐 4

5.2. 透明图片背景 法 4

5.3. 控件的背景动态座标法 4

5.4. 动态重绘(麻烦 5

6. Java详细按钮属性 5

7. 参考 7

1. 图片按钮的效果总结

1.1. 按钮图片自动缩放的。

中间走稍微图片大的不要ps调整兰,方便...

1.2. 不要边框,如果用自定义图片做按钮背景可以设为 false。

1.3. 异形按钮

透明空白填空如果你的自定义图片不是矩形或存在空白边距,可以设为 false 使按钮看起来透明。

1.4. 不绘制焦点

1.5.  鼠标经过时的图标

1.6.  选中时的图标

1.7. 禁用时显示的图标

1.8.  可能需要按钮半透明效果

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

2. 图片按钮的实现

2.1. 优先模式:button控件模式+backgroud属性

Java的实现,可以使用button模式

2.2. 其次模式2::lable/img控件实现

3. 非规则按钮的实现

3.1. 穿透颜色属性(推荐,方便)

图片中的这个颜色将不渲染。。当然复杂图片不适应

C# 支持这个实现

3.2. 透明填空:png图片模式

java的是png+prop

3.3. setMask模式

C++ qt 可以使用pn、gif图片进行setMask模式.   ui->pushButton->setMask(pixmap.mask());

3.4. 重绘button的paint事件(最不推荐,复杂)

但是这个是最终实现,底层。。通用。

3.5. Html热点 map模式

4. 鼠标越过动态图片切换实现

4.1. 优先模式::css模式...

C++ qt可以使用这个模式

4.2. 其次模式2:: 设置属性模式..

Java 不支持css模式,可以使用属性模式。但是设置的属性比较多,可以抽出一个扩展类。。

4.3. 最后的模式3::写鼠标监听器

5. 半透明按钮的实现

5.1. 属性法,方便。推荐

C++ qt  setAttribute(Qt::WA_TranslucentBackground, true);

5.2. 透明图片背景 法

5.3. 控件的背景动态座标法

没这个功能。。。只能把控件的背景根

据插件的坐标,设置得和窗口的背景一样

就是如果控件在x1,y1这个点上,则在控件设置背景的时候,把使用到的那张背景图在控件的现实位置也设置为x1,y1的坐标









所谓控件透明,是指控件的背景与窗口的大背景是一样的。





如果控件不移动,则可以取窗口相应位置的背景图来做控件的背景,用 setBackgroudPixmap





如果控件可移动,那就要在移动的时候再重新取窗口相应位置的背景来重新设置控件背景。





原理如此,可以自己实现的

5.4. 动态重绘(麻烦

6. Java详细按钮属性

JButton 实现了普通的三态外加选中、禁用状态,有很多方法可以设置,不要自己去写鼠标监听器。有了这些方法根本不需要自己画按钮或者用鼠标监听器。

setBorderPainted(boolean b) //是否画边框,如果用自定义图片做按钮背景可以设为 false。 setContentAreaFilled(boolean b) //是否填充,如果你的自定义图片不是矩形或存在空白边距,可以设为 false 使按钮看起来透明。 setFocusPainted(boolean b) //是否绘制焦点(例如浅色虚线框或者加粗的边框表明按钮当前有焦点)。

setMargin(Insets m) //改变边距,如果 borderPainted 和 contentAreaFilled 都设成了 false,建议把边距都调为 0:new Insets(0, 0, 0, 0)。 setIcon(Icon defaultIcon) //注意了这是改的默认图标。三态中的默认,即鼠标未在其上的时候。 setPressedIcon(Icon pressedIcon) //按下时的图标。 setRolloverIcon(Icon rolloverIcon) //鼠标经过时的图标。 setRolloverSelectedIcon(Icon rolloverSelectedIcon)
//鼠标经过时且被选中状态的图标。 setSelectedIcon(Icon selectedIcon) //选中时的图标。 setDisabledIcon(Icon disabledIcon) //禁用时显示的图标。例如可以换一张灰度图片。 setDisabledSelectedIcon(Icon disabledSelectedIcon) //禁用且被选中状态的图标。 --------------------------------------------按钮多大,去掉边距以后图片就是多大。会自动缩放的。因此如果 margin 都设成 0 的话,按钮多大图片就是多大。有了这些方法根本不需要自己画按钮或者用鼠标监听器。

7. 参考

paip.提升用户体验---c++ QPushButton按钮控件透明以及不规则按钮以及 鼠标越过动态设置 - attilax的专栏 - 博客频道 - CSDN.NET.htm

paip.提升用户体验---控件透明的设置 - attilax的专栏 - 博客频道 - CSDN.NET.htm

atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js的更多相关文章

  1. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  2. Atitit.Gui按钮与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数.

    Atitit.Gui按钮与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数. 1. Kpi:::  代码行数(注释行数,空白的行数), 方法数,class数 1 2. 过滤器 ...

  3. Css 单图片按钮实例(css 图片变换)

    1.场景描述,根据鼠标的移动,动态的切换按钮图片. 2.方法1,准备两张120*41的图片,一张正常状态图片,一张按下效果图片.在鼠标放在的按钮上设置按下图片,移开又恢复到正常状态图片.缺点:在网页上 ...

  4. winfrom播放动态图片

    winfrom是不能直接加载的动态图片的.只能够自己写方法实现. 具体代码如下: using System; using System.Collections.Generic; using Syste ...

  5. devexpress表格控件gridcontrol图片列,按钮列,时间列等特殊列的实现

    1.项目中经常会在表格中插入按钮列,图片列,表格列一些非文本的特殊列.如何在devexpress表格控件gridcontrol中实现呢?以下列举一个实现添加图片列,按钮列,时间列,按钮列,开关列的示例 ...

  6. Atitit gui控件定位解决方案

    Atitit gui控件定位解决方案 1.1. 但是AUTOIT没有找图功能..可以请大侠们写一份这个UDF出来吗?1 1.2. ahk1 1.3. Java +opencv 模板匹配2 1.1. 但 ...

  7. Atitit. Gui控件and面板----程序快速启动区--最佳实践Launchy ObjectDock-o0g

    Atitit.  Gui控件and面板----程序快速启动区--最佳实践Launchy ObjectDock-o0g 两个方式::: 键盘式::先用热键呼叫出QS,然后开始输入程序中的部分字母,按En ...

  8. Android—基于GifView显示gif动态图片

    android中显示gif动态图片用到了开源框架GifView 1.拷GifView.jar到自己的项目中. 2.将自己的gif图片拷贝到drawable文件夹 3.在xml文件中设置基本属性: &l ...

  9. Atitit.gui api自动化调用技术原理与实践

    Atitit.gui api自动化调用技术原理与实践 gui接口实现分类(h5,win gui, paint opengl,,swing,,.net winform,)1 Solu cate1 Sol ...

随机推荐

  1. git使用教程1-本地代码上传到github

    前言 不会使用github都不好意思说自己是码农,github作为一个开源的代码仓库管理平台,我们可以把自己的代码放到github上,分享给小伙伴,自己也能随时随地同步更新代码. 问题来了:为什么越来 ...

  2. 简单的后台管理系统vue-cli3.0+element-ui

    前段时间在研究一个分发系统,发现vue-cli+element-ui好像是挺不错的,然后自己根据那个分发系统尝试搭建了一下 1.首先安装vue和vue-cli // 全局安装vue npm insta ...

  3. Node 多进程并发控制小模块 - lockman

    介绍 lockman 是一个用于多进程的并发控制锁, 类似一些语言中(比如 C#)的 lock 关键字可以用来确保代码块完成运行,而不会被其他进程中断.它可以把一段代码定义为互斥段(critical ...

  4. 9.线程通信wait、notify

    线程之间通信 1.线程是操作系统的独立的个体,但这些个体如果不经过特殊处理就不能成为一个整体. 2.使用wait.notify,方法实现线程通信(2个方法都是需要object方法) 3.wait(释放 ...

  5. apache kafka监控系列-KafkaOffsetMonitor(转)

    原文链接:apache kafka监控系列-KafkaOffsetMonitor 概览 最 近kafka server消息服务上线了,基于jmx指标参数也写到zabbix中了,但总觉得缺少点什么东西, ...

  6. 实现SQL Server中的切割字符串SplitString函数

    有时我们要用到批量操作时都会对字符串进行拆分,可是SQL Server中却没有自带Split函数,所以要自己来实现了.没什么好说的,需要的朋友直接拿去用吧 SET ANSI_NULLS ON GO S ...

  7. Windows之权限讲解

    windows中,权限指的是不同账户对文件,文件夹,注册表等的访问能力.在windows中,为不同的账户设置权限很重要,可以防止重要文件被其他人所修改,使系统崩溃. 1权限概念 我们可以在控制面板中设 ...

  8. GOOGLE突破图书馆入口IP限制之技巧

    很多图书馆都要注册或要本地IP才能浏览或下载图书,有没有另类的快速办法能快速突破图书馆的入口,能随意地下载图书呢? 希望大家在GOOGLE里试试这个:“index of/ ” inurl:lib 你将 ...

  9. STM32F103 GU906B模块GPRS、短信收发、拨号等功能的实现

    这个程序搞了我很久,尤其是对如何提高响应速度上,程序流程很简单,大概就是: 发送AT指令->等待模块响应->一旦响应了,立即返回,并处理掉. 这个程序不一定只能用在GU906上,程序框架在 ...

  10. JDK 1.7版本的 新特性

    摘自: http://yanguz123.iteye.com/blog/1934766 Jdk1.7的新特性: 1,switch中可以使用字串 Java代码: String s = "tes ...