QQ桌球瞄准器开发(4)透明度、颜色、线宽与母球大小

填写您的邮件地址,订阅我们的精彩内容:

转载请注明: 敏捷学院-技术资源库  http://mjxy.cn  作者:邢泉  原文链接:http://dev.mjxy.cn/a-Step-4-transparency-color-line-width-and-the-size-of-the-cue-ball.aspx

本节内容介绍如何使用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

posted @ 2011-08-17 21:35  敏捷学院  阅读(2397)  评论(1编辑  收藏  举报