重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
VB.NET里用GDI+画指示灯其实很简单,稍微查一点资料就能找到gdi+语句的用法的。用GDI+可以画很多种图形,圆形半圆形自然不在话下。如果有很多指示灯在一起的话,改起来也很方便。
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的西区网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
当然如果嫌GDI+麻烦可以用label控件,把autosize关掉,将尺寸调小一点,然后利用backcolor调背景颜色作为指示灯,只不过是方形的。
如果指示灯很多而且频繁换颜色的话建议用GDI+,因为GDI+效率高一些
在VC中,通常用MFC的CDC类进行绘图。
简单的原型绿色指示灯,使用绿色刷子画圆形即可:
CBrush br(RGB(0,255,0));//绿色刷子
CBrush* oldB = pDC-SelectObject(br);
pDC-Ellipse(CRect(50,50,100,100));//画圆
pDC-SelectObject(oldB);
但这样的“指示灯”比较简陋,如果希望有立体、光影等效果,不建议使用简单形状绘图,而是将指示灯在专业制图软件(如PS)中绘制好之后,做成BMP文件,在程序中通过TransparentBlt函数绘制出来,效果会更好。
可使用FillColor属性改变Shape控件填充形状的颜色。
当灯亮时显示灯亮的色彩。
当灯灭时显示窗体的BackColor背景颜色。
BackColor属性,BackColor-返回或设置对象的背景颜色。
用一个Timer控件的Timer事件来判别条件的变化。
以下是实施代码。
Option Explicit
Dim zt_dm1
Private Sub Command1_Click()
zt_dm1 = 1
End Sub
Private Sub Command2_Click()
zt_dm1 = 0
End Sub
Private Sub Form_Load()
zt_dm1 = 0
Timer1.Interval = 200
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
If zt_dm1 = 1 Then
Shape1.FillStyle = 0
Shape1.FillColor = vbGreen
Shape2.FillStyle = 0
Shape2.FillColor = Me.BackColor
Else
Shape1.FillStyle = 0
Shape1.FillColor = Me.BackColor
Shape2.FillStyle = 0
Shape2.FillColor = vbRed
End If
效果:
用shape控件,把类型设置为圆形,程序里控制它的填充色来表示不同状态
shape做指示灯方法,我在旁边注解了说明。
建立表单添加控件 shape command 两个控件,输入以下代码(两个控件都是VB默认就有的)。
Private Sub Command1_Click() '按钮1按下的代码
If Shape1.FillColor = RGB(255, 255, 0) Then '若shape1为黄色则
Shape1.FillColor = RGB(255, 255, 255.255) '变更shape1为白色
Else
Shape1.FillColor = RGB(255, 255, 0) '其它情况则变成黄色
End If
End Sub
Private Sub Form_Load() '表单读取时定义Shape属性
Shape1.Shape = 3: '设定为形状为正圆形
Shape1.FillColor = RGB(255, 255, 0) '黄色
Shape1.FillStyle = 0: '显示背景
End Sub