C

雅轩聊科技 2024-07-05 00:17:13

哈喽,你好啊,我是雷工!

红球区和篮球区的选择球可以通过拖拽控件一个一个的拖放实现,但该方法太浪费时间,可以使用循环动态生成;

只要通过观察找到每个球的位置坐标的规律,就可以通过循环生成,这样即使有再多球也不至于一个一个的拖放实现了;

以下为初始化动态生成大乐透选择球的学习笔记。

01 实现效果

实现效果如下图所示,当运行程序时,可以动态生成01-35共35个红球区的选择球;

02 红色球属性设置

2.1、添加样式

添加球选择样式,当移动到球上时显示手型;

2.2、关键球设置

可以通过复制粘贴排列35个球的位置,然后分析每个球的位置坐标及横向间隔和每排的间隔;

03 实现思路

每增加一个选择球就相当于在界面增加了一个Label控件,且每个控件的属性有些是相同的,像Font字体字号、Image、Size等属性;

有些属性是有规律变化的像Name、Text等属性数值是递增的;

可以通过初始化时在固定容器内添加需要的Label控件,并按需求设置其位置及属性。

04 实现脚本

4.1、红球初始化方法

其中尺寸信息和间隔信息可以通过UI设计的切图尺寸查看,也可以通过绘制几个样例简单复制排列位置,然后查看对应属性获取;

其中设计的是4排选择球,这里用的if判断的,其实也可以通过循环嵌套实现,不过那种更考验逻辑;这种更容易理解;

实现脚本如下:

#region 红色球区域初始化private void InitRedPanel(){ for(int i=1;i<=35;i++) {//不变的属性Label lbl = new Label();lbl.Cursor = System.Windows.Forms.Cursors.Hand;lbl.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));lbl.Image = Image.FromFile("Image/gray.png");lbl.Size = new System.Drawing.Size(45, 45);lbl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;//变化的属性lbl.Name = "lblRed"+i;lbl.Text = i < 10 ? "0" + i : i.ToString();lbl.Tag = "0";//将球的Tag标签设置为默认0,表示为灰色,用于点击变换颜色(实际开发中,Tag标签也可以用来存储各种数据)//单独计算坐标值if(i<=10)//第1排的坐标{ lbl.Location = new System.Drawing.Point(16+51*(i-1), 16);}else if(i>=11 && i<21){ lbl.Location = new System.Drawing.Point(16 + 51 * (i - 1-10), 68);}else if(i>=21 && i<31){ lbl.Location = new System.Drawing.Point(16 + 51 * (i - 1 - 20), 120);}else if(i>=31){ lbl.Location = new System.Drawing.Point(16 + 51 * (i - 1 - 30), 172);}// lbl.Location = new System.Drawing.Point(16, 16);//添加到面板集合中this.panelRed.Controls.Add(lbl); }}#endregion

4.2、调用红球初始化方法

代码如下:

public FrmMain(){ InitializeComponent(); InitRedPanel();//调用红球初始化方法}05 后记

以上为初始化动态生成大乐透红球区选择球的实现笔记;

有记录不当或有更好实现方法可以在评论区留言,更多相关话题也可以在交流群内沟通,共同学习。

0 阅读:0

雅轩聊科技

简介:感谢大家的关注