atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js
atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js
1.2. 不要边框,如果用自定义图片做按钮背景可以设为 false。 2
2.1. 优先模式:button控件模式+backgroud属性 2
3.4. 重绘button的paint事件(最不推荐,复杂) 3
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的更多相关文章
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
- Atitit.Gui按钮与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数.
Atitit.Gui按钮与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数. 1. Kpi::: 代码行数(注释行数,空白的行数), 方法数,class数 1 2. 过滤器 ...
- Css 单图片按钮实例(css 图片变换)
1.场景描述,根据鼠标的移动,动态的切换按钮图片. 2.方法1,准备两张120*41的图片,一张正常状态图片,一张按下效果图片.在鼠标放在的按钮上设置按下图片,移开又恢复到正常状态图片.缺点:在网页上 ...
- winfrom播放动态图片
winfrom是不能直接加载的动态图片的.只能够自己写方法实现. 具体代码如下: using System; using System.Collections.Generic; using Syste ...
- devexpress表格控件gridcontrol图片列,按钮列,时间列等特殊列的实现
1.项目中经常会在表格中插入按钮列,图片列,表格列一些非文本的特殊列.如何在devexpress表格控件gridcontrol中实现呢?以下列举一个实现添加图片列,按钮列,时间列,按钮列,开关列的示例 ...
- Atitit gui控件定位解决方案
Atitit gui控件定位解决方案 1.1. 但是AUTOIT没有找图功能..可以请大侠们写一份这个UDF出来吗?1 1.2. ahk1 1.3. Java +opencv 模板匹配2 1.1. 但 ...
- Atitit. Gui控件and面板----程序快速启动区--最佳实践Launchy ObjectDock-o0g
Atitit. Gui控件and面板----程序快速启动区--最佳实践Launchy ObjectDock-o0g 两个方式::: 键盘式::先用热键呼叫出QS,然后开始输入程序中的部分字母,按En ...
- Android—基于GifView显示gif动态图片
android中显示gif动态图片用到了开源框架GifView 1.拷GifView.jar到自己的项目中. 2.将自己的gif图片拷贝到drawable文件夹 3.在xml文件中设置基本属性: &l ...
- Atitit.gui api自动化调用技术原理与实践
Atitit.gui api自动化调用技术原理与实践 gui接口实现分类(h5,win gui, paint opengl,,swing,,.net winform,)1 Solu cate1 Sol ...
随机推荐
- js:对象的创建(为prototype做铺垫)
/** *在js中并不存在类,所以能够直接通过Object来创建对象,可是使用这样的方式创建有一 *弊端:因为没有类的约束,无法实现对象的反复利用,而且没有一种规范约定,在操作时easy带来问题. ...
- UIBezierPath的使用(持续更新)
UIBezierPath的使用 1. 使用UIBezierPath绘制多边形 // 获取path UIBezierPath *aPath = [UIBezierPath bezierPath]; // ...
- ffmpeg中的sws_scale算法性能对比
sws_scale的算法有如下这些选择. #define SWS_FAST_BILINEAR 1#define SWS_BILINEAR 2#define SWS_BICUBIC 4#define S ...
- js轮播功能 标签自动切换 同页面多轮播js
需要加入jquery 1.43及以上版本 下面还有个简单版,一个页面只支持一个轮播 同页面多轮播js <div> <div class="yt_content"& ...
- Servlet学习笔记(三):HTTP请求与响应
一.HTTP请求常用方法: Cookie[] getCookies()返回一个数组,包含客户端发送该请求的所有的 Cookie 对象. Enumeration getAttributeNames()返 ...
- hybrid app开发中用到的html5新特性localStorage、sessionStorage和websql database
近期在项目中进行hybrid app开发,项目中有大量的js代码执行在android设备上. 使用到了非常多HTML5的新特性,之前没有遇到过,不了解.这里记录下添加点前端的知识.混合式app开发中. ...
- mysql 索引长度的限制
myisam表,单列索引,最大长度不能超过 1000 bytes: innodb表,单列索引,最大长度不能超过 767 bytes: utf8 编码时 一个字符占三个字节 varchar 型能建 ...
- hdu 1007 Quoit Design(分治法求最近点对)
大致题意:给N个点,求最近点对的距离 d :输出:r = d/2. // Time 2093 ms; Memory 1812 K #include<iostream> #include&l ...
- Yii学习笔记之二(使用gii生成一个简单的样例)
1. 数据库准备 (1) 首先我们建一数据库 yii2test 并建立一张表例如以下: DROP TABLE IF EXISTS `posts`; CREATE TABLE `posts` ( `po ...
- vim 如何编辑 GB2312 编码的文件?
vim 如何编辑 GB2312 编码的文件? 彻底搞清楚字符编码: ASCII, ISO_8859, GB2312,UCS, Unicode, U 结合file和iconv命令转换文件的字符编码类型 ...