查看: 58|回复: 0

[教程] 易语言自定义外形按钮实现过程

[复制链接]

2

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2011-8-20
发表于 2019-1-3 16:43:19 | 显示全部楼层 |阅读模式

不少软件作者肯定因为易语言没有内置自定义外形按钮而烦恼,不过你却可以用其他组件来实现——用画板制作自定义外形按钮

1、新建一个“易语言”窗口程序

2、添加组件——一个画板到窗口内

为了方便定位按钮的位置

你可以把画板的宽度设置为:80,高度也设置为:80

为了清楚画板在哪里,可以把底色设置成你喜欢的颜色

3、然后就可以输入代码了

先输入变量代码,代码如下:

.版本 2

.程序集 窗口程序集_启动窗口

.程序集变量 鼠标停留在画板内, 逻辑型

.程序集变量 鼠标移动在画板内, 逻辑型

.程序集变量 横坐标, 整数型

.程序集变量 纵坐标, 整数型

.程序集变量 半径, 整数型

.程序集变量 x, 双精度小数型

.程序集变量 y, 双精度小数型

.子程序 __启动窗口_创建完毕

横坐标 = 50 ' 设置变量数值

纵坐标 = 50 ' 设置变量数值

半径 = 25 ' 设置变量数值

1、添加画板焦点颜色

先绘画画板外形

代码如下:

.版本 2

.子程序 _画板1_绘画

.参数 重画区左边, 整数型

.参数 重画区上边, 整数型

.参数 重画区右边, 整数型

.参数 重画区下边, 整数型

画板1.画椭圆 (横坐标 - 半径, 纵坐标 - 半径, 横坐标 + 半径, 纵坐标 + 半径) ' 画板1.画椭圆 你可以替换成 画板1.画矩形 等其他形状

2、添加画板焦点图片

代码如下:

.版本 2

.子程序 _画板1_鼠标位置被移动, 逻辑型

.参数 横向位置, 整数型, , 鼠标指针横向位置

.参数 纵向位置, 整数型, , 鼠标指针纵向位置

.参数 功能键状态, 整数型

x = 横向位置 - 横坐标

y = 纵向位置 - 纵坐标

.如果 (x × x + y × y < 半径 × 半径) ' 检测鼠标指针位置是否在画板内

  .如果 (鼠标停留在画板内)

  .否则

    画板1.刷子颜色 = #浅灰

  .如果结束

  .如果真 (取反 (鼠标移动在画板内))

    画板1.重画 () ' 重画——画板1.刷子颜色 = #浅灰

  .如果真结束

  鼠标移动在画板内 = 真 ' 等于真则返回假——鼠标离开画板后画板颜色改变,等于假则返回真——鼠标离开画板后画板颜色不变

.否则

  画板1.刷子颜色 = #白色

  .如果真 (鼠标移动在画板内)

    画板1.重画 () ' 重画——画板1.刷子颜色 = #白色

  .如果真结束

  鼠标移动在画板内 = 假 ' 等于真则返回假——鼠标离开画板后画板颜色改变,等于假则返回真——鼠标离开画板后画板颜色不变

3、按F5运行看看

当鼠标停留在画板内,画板颜色就会变成灰色

当鼠标离开在画板内,画板颜色就会变成白色

1、添加画板按钮效果

命令及变量我已经解释过了,就不多解释了

直接输入代码,代码如下:

.版本 2

.子程序 _画板1_鼠标左键被按下, 逻辑型

.参数 横向位置, 整数型

.参数 纵向位置, 整数型

.参数 功能键状态, 整数型

x = 横向位置 - 横坐标

y = 纵向位置 - 纵坐标

.如果真 (x × x + y × y < 半径 × 半径)

  鼠标停留在画板内 = 真

  画板1.刷子颜色 = #灰色

.如果真结束

画板1.重画 ()

.子程序 _画板1_鼠标左键被放开, 逻辑型

.参数 横向位置, 整数型

.参数 纵向位置, 整数型

.参数 功能键状态, 整数型

鼠标停留在画板内 = 假

x = 横向位置 - 横坐标

y = 纵向位置 - 纵坐标

.如果真 (x × x + y × y < 半径 × 半径)

  信息框 (“按钮被按下”, 0, )

  画板1.重画 ()

.如果真结束

2、这样基本画板按钮就完成了

按F5运行看看效果

这样就可以实现自定义外形按钮了

您可能感兴趣的文章:
  • 详解易语言按钮结束和销毁的应用
  • 易语言图形按钮控件的用法详解
  • 易语言最小化按钮制作过程
  • 易语言超级按钮使用技巧
  • 浅析易语言窗口上的"关闭"按钮事件
  • 易语言图形按钮组件切换类型使用讲解
  • 详解易语言按钮的用法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部