开发QQ桌球瞄准器(4):透明度、颜色、线宽与母球大小
转载请注明: 敏捷学院-技术资源库 http://mjxy.cn 作者:邢泉
本节内容介绍如何使用TrackBar控件改变窗体透明度,绘制线宽带以及母球的大小,关于窗体界面的设计请参考 步骤2:创建项目添加主窗体。
透明度
使用TrackBar控件frmOpacityTrackBar来控制窗体的透明度。
为frmOpacityTrackBar添加Scroll事件。Scroll事件是当TrackBar被滑动的时候触发。首先选中frmOpactiyTrackBar控件,然后切换到“属性”窗口,在事件列表里找到Scroll事件,接着双击Scroll事件。开发工具会为我们生成事件的代码。
Form窗体的不透明度是使用Opacity属性值来表示的。Opacity 属性使您可以指定窗体及其控件的透明度级别。将此属性设置为小于 100% (1.00) 的值时,会使整个窗体(包括边框)更透明。将此属性设置为值 0% (0.00) 时,会使窗体完全不可见。可以使用此属性提供不同级别的透明度,或者提供如窗体逐渐进入或退出视野这样的效果。例如,可以通过将 Opacity 属性设置为值 0% (0.00),并逐渐增加该值直到它达到 100% (1.00),使一个窗体逐渐进入视野。
frmOpacityTrackBar在步骤2:创建项目添加主窗体中定义了Maximum的值是100(不透明),Minimum的值是5(最小透明度)。所以我们只需要在frmOpacityTrackBar的Scroll事件中根据根据frmOpacityTrackBar的属性Value(当前滑动的值)来修改Form窗体的Opacity 属性即可。
示例代码:
//窗口透明度
private void frmOpacityTrackBar_Scroll(object sender, EventArgs e)
{
this.Opacity = frmOpacityTrackBar.Value / 100.0;
}
线宽
使用TrackBar控件penWeigthTrackBar来改变绘制图像的线宽。同设置窗体透明度一样,我penWeightTrackBar控件添加Scroll。penWeigthTrackBar在步骤2:创建项目添加主窗体中定义了Maximum的值是20。Minimum的值是1。
示例代码:
//线宽
private void penWeigthTrackBar_Scroll(object sender, EventArgs e)
{
this.penWidth = penWeigthTrackBar.Value/10;
}
母球大小
改变母球大小的方法与上面相同,这里我们添加一个成员变量base_radius来表示母球的初始大小。
public partial class Form1 : Form
{
private const float radius_base = 9.5f;
….
}
添加ballSizeTrackBar的Scroll事件代码
private void ballSizeTrackBar_Scroll(object sender, EventArgs e)
{
this.radius = radius_base + ballSizeTrackBar.Value / 10;
}
颜色
绘制图形的颜色,为colorBtn添加单击事件。改变画笔颜色的同时也修改colorBtn的背景颜色,以方便的知道我们当前选择的颜色。
示例代码
//颜色
private void colorBtn_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
colorBtn.BackColor = penColor = colorDialog1.Color;
}
}
测试运行我们的程序如下图所示:
你可以试着改变窗体的透明度,线宽,母球大小来观察运行的结果。
清除图像
正如步骤1:桌球瞄准器介绍与使用方法中描述的,我们在Form窗体右键单击的时候才清除已经绘制的图像。修改Form窗体的鼠标单击事件:
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
//清除图像
this.Refresh();
}
else if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
//记住线条起点
startPoint = new Point(e.X, e.Y);
}
}
代码下载
taiqiu_step4.zip
本节内容结束。
下一节讲述如何使用注册表保存设置好的值,这样的好处是在程序下次启动的时候还会保留上一次配置的结果,在使用上会给我们带来方便。
参考资料
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.form.opacity(VS.80).aspx
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.trackbar(VS.80).aspx
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.trackbar(VS.80).aspx
开发QQ桌球瞄准器(4):透明度、颜色、线宽与母球大小相关推荐
- tt桌球瞄准器手机版_新年换台新手机!各价位段哪些机型值得入手?
新机=新机遇.新机会,2021年请对我好一点,不如就从换个手机开始? 我们为大家吐血盘点了截止发稿各价位段上最推荐入手的机型,颗粒度500元一档,不止考虑性价比,还会参考真实用户体验.这一年群机荟萃. ...
- tt桌球瞄准器手机版_法国或将禁止不可拆卸手机,想当年手机后盖随便拆开玩儿...
近日,法国通过了一项<维修权>相关法案,针对手机.电脑等电子消费品,规定禁止不可拆卸.维修.替换零件的一体机上市.并且,将对电子产品的易维修性进行1-10的打分,来向消费者提示设备的拆卸和 ...
- Qt5学习 模仿qq音乐播放器样式(2)——点击动画效果+歌词颜色变换展示
拖的太久,主要再上一篇文章中,新学习了相关知识,做了右键菜单,点击按钮动画切换窗口和播放时歌词颜色显示当前播放位置. 主要为了实现功能的展示,所以很多文件读取都直接采用了本地文件这种比较low的方式. ...
- python如何自制音乐软件_Python开发制作酷狗和QQ音乐下载器
开发工具 **Python版本:**3.6.4 相关模块: requests模块 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 相关文件 ...
- 从零玩转jQuery之项目开发(QQ音乐播放器)
QQ音乐播放器项目 大体效果如下: HTML结构分析: 一.页面布局 1.首先来看下HTML大体结构: <div class="header"></div> ...
- iOS开发 QQ粘性动画效果
QQ(iOS)客户端的粘性动画效果 时间 2016-02-17 16:50:00 博客园精华区 原文 http://www.cnblogs.com/ziyi--caolu/p/5195615.ht ...
- .net vue漂亮登录界面_基于 electron-vue 开发的音乐播放器「实践」
作者:XiaoTuGou 转发链接:https://github.com/SmallRuralDog 前言 基于 electron-vue 开发的音乐播放器,界面模仿QQ音乐. 技术栈electron ...
- 截获网易云、酷狗、QQ音乐播放器桌面歌词画面心德
在直播项目中 需要捕获某个窗口的画面并共享 总结了如下几种场景中窗口的捕获方法 1.dc拷贝(BitBlt.PrintWindow) 这是最基本的方法 直接拿到窗口dc 然后从dc中拷贝窗口画面 可优 ...
- 微信PHP开发《音乐播放器》
文章目录 前言 一.简介 二.引入Vant框架 1.引入库 2.需要用到的知识 三.页面编写,以及js的实现 1.首页 2.搜索页 3.获取搜索歌曲 4.播放页 5.榜单列表页 6.对应页面的json ...
- 【QQ音乐】QQ音乐播放器超酷使用技巧逐个揭秘
[编者按]QQ音乐播放器凭借QQ强大的人气,目前已经成为许多朋友听歌的首选了,它带给我们无与伦比的快乐音乐体验.QQ音乐播放器的功能是如此的丰富,用户不仅仅是简单的在线听歌,还可以观看MV.收听在线广 ...
最新文章
- 【iOS】自定义控件入门:可拖动的环形进度
- Django REST framework API 指南(11):序列化·关系
- 08--MySQL自学教程:DQL(数据库查询)字段控制查询、聚合函数、分组查询、limit(二)
- MySQL: Connection Refused,调整 mysql.ini中的 max_connections
- Replacing the ESXi Host Default Certificate with a CA-Signed Certificate
- Python如何引用豆瓣api镜像地址
- wxWidgets之wxGrid控件
- .NET6之MiniAPI(二十一):限流
- call和ret(f)指令
- 将自己名字PS到他人论文上,并推文说在Nature上发了新文章,如此操作你见过吗?...
- Python | 面试必问,线程与进程的区别,Python中如何创建多线程?
- 题外:分类篇(音乐风格分类)基于BP神经网络
- C/S模型之TCP协议
- ap.net core 教程(三)
- python学习笔记011——检查变量类型type()
- 免费获得卡巴斯基key的方法
- android 模拟gps坐标,android中模拟器中实现GPS坐标改变
- 布料仿真先导2-带阻尼的单个小球单摆下的拉格朗日方程列些和matlab仿真
- Processing 案例 | 诡异的八爪鱼
- HDU 4417 Super Mario(离线线段树or树状数组)