QQ桌球瞄准器开发(4)透明度、颜色、线宽与母球大小
本节内容介绍如何使用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
相关章节
更多内容请访问 http://dev.mjxy.cn/a-Tutorial-5-QQ-Snooker-sight.aspx
步骤2:创建项目添加主窗体
步骤3:绘制瞄准线及母球
步骤4:透明度、颜色、线宽与母球大小
步骤5:使用注册表保存配置
步骤6:更精确瞄准目标球的绘制
转载于:https://www.cnblogs.com/xingquan/archive/2011/08/17/2143617.html
QQ桌球瞄准器开发(4)透明度、颜色、线宽与母球大小相关推荐
- tt桌球瞄准器手机版_新年换台新手机!各价位段哪些机型值得入手?
新机=新机遇.新机会,2021年请对我好一点,不如就从换个手机开始? 我们为大家吐血盘点了截止发稿各价位段上最推荐入手的机型,颗粒度500元一档,不止考虑性价比,还会参考真实用户体验.这一年群机荟萃. ...
- tt桌球瞄准器手机版_法国或将禁止不可拆卸手机,想当年手机后盖随便拆开玩儿...
近日,法国通过了一项<维修权>相关法案,针对手机.电脑等电子消费品,规定禁止不可拆卸.维修.替换零件的一体机上市.并且,将对电子产品的易维修性进行1-10的打分,来向消费者提示设备的拆卸和 ...
- 微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义
把录音的模块尝试过之后就想着微信小程序的视频播放会不会更有趣? 果然,微信小程序视频自带弹幕.是不是很爽,跟我一起来看看. 微信小程序开发之录音机 音频播放 动画 (真机可用) 先上gif: 再上几张 ...
- 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> ...
- Android进阶:自定义视频播放器开发(下)
上一篇文章我们主要讲了视频播放器开发之前需要准备的一个知识,TextureView,用于对图像流的处理.这篇文章开始构建一个基础的视频播放器. 一.准备工作 在之前的文章已经说过了,播放器也是一个vi ...
- 《Android 应用案例开发大全(第3版)》——第2章,第2.8节壁纸中的着色器开发...
本节书摘来自异步社区<Android 应用案例开发大全(第3版)>一书中的第2章,第2.8节壁纸中的着色器开发,作者 吴亚峰 , 苏亚光 , 于复兴,更多章节内容可以访问云栖社区" ...
- 白鹭引擎用java_白鹭引擎产品工具更新 完善小游戏、QQ玩一玩开发支持
原标题:白鹭引擎产品工具更新 完善小游戏.QQ玩一玩开发支持 为了让开发者们获得更好的开发体验,同时在搜集大家通过官方社区.微信小游戏技术讨论群提交的反馈意见后,我们在1月29日对旗下的白鹭引擎.Eg ...
- 微信公众号教程(18)微信音乐播放器开发 上
微信音乐播放器开发 原文:http://www.cnblogs.com/imaker/p/6252638.html 一.Html5的audio组件 HTML5 有两个很炫的元素,就是Audio和 ...
最新文章
- 2021China SAFe Day中国规模化敏捷会
- Java中Integer包装类之间的比较问题
- ARP协议及ARP欺骗详解
- The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
- coddenomicon工具
- Linux下qwt源码编译,QWT的编译与配置
- MySQL NULL的小陷阱
- 嵌入式软件工程师_嵌入式软件工程师适合去芯片公司吗?
- Thinkphp3.2.3 SQL注入漏洞
- html中对应Word中的字体和字号
- swift html5 跳转页面跳转,Swift - 纯代码实现页面segue跳转,以及参数传递
- 利用metadata-extractor定向获取图片拍摄时间以及宽高
- 2019-04-01 银行的零售业务和对公业务
- matlab语言在天线设计,matlab语言在天线设计中的运用
- 高数 | 【微分方程】已知常系数微分方程特解,反求原方程
- 负数在计算机中如何表示,计算机中负数为什么用补码表示?
- 安装ut2004, usarsim on linux
- 基于RFID军用物资管理系统-RIFD战备物资仓库管理系统
- 用Python实现tree命令
- 全国所有城市当天天气数据爬虫