VB.NET里用GDI+画指示灯其实很简单,稍微查一点资料就能找到gdi+语句的用法的。用GDI+可以画很多种图形,圆形半圆形自然不在话下。如果有很多指示灯在一起的话,改起来也很方便。
站在用户的角度思考问题,与客户深入沟通,找到惠东网站设计与惠东网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、做网站、企业官网、英文网站、手机端网站、网站推广、主机域名、网站空间、企业邮箱。业务覆盖惠东地区。
当然如果嫌GDI+麻烦可以用label控件,把autosize关掉,将尺寸调小一点,然后利用backcolor调背景颜色作为指示灯,只不过是方形的。
如果指示灯很多而且频繁换颜色的话建议用GDI+,因为GDI+效率高一些
下面这个希望可以帮到你~交通灯
实例说明在本实例中,我们将制作一个具有交通灯效果的应用程序。程序运行后,交通灯不断地变化,可以通过按钮运行或停止程序。程序运行结果如图88-1所示。技术要点l 不断变换图片l 不断更改时间间隔 type="text/javascript" type="text/javascript" src=" "
实现过程■ 新建项目打开Visual Studio.NET,选择"新建项目",在项目类型窗口中选择"Visual Basic项目",在模板窗口中选择"Windows应用程序",在名称域中输入"Traffic",然后选择保存路径。单击"确认"。■ 添加控件向当前窗体添加一个Timer控件,用于控制交通灯变换的时间;三个Picture控件,分别装入相应的图片;一个Button按钮,用于控制交通灯。属性保持默认值。■ 添加代码Dim vv As BooleanDim updirec As BooleanPrivate Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Clickvv = Timer1.Enabledvv = Not vvTimer1.Enabled = vvIf vv ThenCommand1.Text = "开 始"ElseCommand1.Text = "停 止"End IfEnd SubPrivate Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.TickStatic i As ShortSelect Case iCase 0Timer1.Interval = 3000picicon0.Visible = Truepicicon1.Visible = Falsepicicon2.Visible = Falsei = i + 1updirec = FalseCase 1Timer1.Interval = 1000picicon0.Visible = Falsepicicon1.Visible = Truepicicon2.Visible = False'Me.Icon = picicon(i).ImageIf updirec Theni = i - 1Elsei = i + 1End IfCase 2Timer1.Interval = 3000picicon0.Visible = Falsepicicon1.Visible = Falsepicicon2.Visible = Truei = i - 1updirec = TrueEnd SelectEnd Sub■ 运行程序单击菜单"调试|启动"或单击 图标运行程序。
首先,你已经完成的步骤是:
1.新建一个用户控件[注意,用户控件(UserControl)不是自定义控件(CustomControl)]
2.给用户控件起个名字(我在此处起名叫 RadioList)
3.在用户控件上画一个 GroupBox,命名为 RadioGroup,
并将其 Dock 属性设置为 Fill
然后,你需要做的是动态增减控件。
如果你以前用过 VB 6,你可能会想到控件数组,
但在此处,你可以直接增删控件。
具体实现如下:
4.在 GroupBox 里画一个 FlowLayoutPanel,命名为 RadioPanel,
将其 AutoScroll 属性设置为 True,即自动显示滚动条,
并设置其 FlowDirection 属性(例如设置为 TopDown)
这样就省去了手动调整 RadioButton 位置的麻烦
5.实现选项的动态增减(以下只是我的思路,你可以发挥一下)
(十分简洁,注释除外):
''' summary
''' 创建一个新的 RadioButton。
''' /summary
Private Function CreateRadio() As RadioButton
Dim NewRadio As New RadioButton
components.Add(NewRadio)
'components 字段由控件设计器自动创建,
'此代码目的是使控件在销毁(Dispose)时能自动销毁 RadioButton
'详情参见 RadioList.Designer.vb
NewRadio.Parent = RadioPanel
'设置容器
AddHandler NewRadio.CheckedChanged, AddressOf RadioButtons_CheckedChanged
'设置事件处理程序
Return NewRadio
End Function
''' summary
''' 移除已存在的 RadioButton。
''' /summary
Private Sub RemoveRadio(ByVal dest As RadioButton)
components.Remove(dest)
dest.Dispose()
End Sub
'无中生有的 RadioButton 的事件处理程序
Private Sub RadioButtons_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
'在此处设置选中项的属性,通过 sender 来确定不同的 OptionButton
'你可以通过将 OptionButton 放在一个列表,
'如 List(Of OptionButton) 中来像数组一样维护选项的次序
'注意,此处需要判断 sender 的 Checked 属性是否为 True
'因为 Changed 是“改变”,而不是“选中”
'例如:
If DirectCast(sender, RadioButton).Checked Then
SelectedIndex = ...
End If
End Sub
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1 TMOD|= 0x20; 试下这个程序,PC发什么,它就回送什么,收到数据,点亮P2.0的LED。