vb.net经典练习 vbnet using

用VB.NET编写一个程序 :编一求阶乘的函数f(n),主调程序求组合数的程序,分别调用f(n),用来计算组合数的值

Private Sub Command1_Click()

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟空间、营销软件、网站建设、富阳网站维护、网站推广。

Dim A, B, C

A = 10

B = 3

C = f(A) / (f(B) * f(A - B))

Print C

End Sub

Private Function f(n)

Dim I As Integer

f = 1

For I = 1 To n

f = f * I

Next I

End Function

vb.net打字练习 richtextbox1输入字母如果跟lablel1的字母不同,则变色,效果同金山打字文章练习

之前load的一个VB的打字程序的一段, 思路和语言跟C#差不多,你借鉴一下吧

Private Sub txtType_Change()

Dim Start As Integer, i As Integer

On Error Resume Next

Start = txtType.SelStart

'If DelTF = True And Len(txtType.Text) = 1 Then txtType.Text = ""

Hang = Num \ 44 '打完一行,就开始打下一行(计算现在应该打第几行)

'If Hang = 8 Then Hang = 0

Hang = Hang Mod 8 'Hang始终都是0-7的顺序下去

No = Num Mod 44 '每一行的第几个

If Start = 0 Or DelTF = True Then Exit Sub '如果在KeyDown中按下删除键则退出Chang

'If Hang = 3 And No = (44 - 5) Then '到第4行倒数第6个,则第1行隐藏,第8行现身

' lblEgg(0).Caption = ""

' 'lblegg(0).Visible=False '可能不需要隐藏,因为是透明模式,没有文字效果与隐藏一样

' For i = 1 To 44 '卸掉现在行的前面第3行,中间隔着2行 例:(44*3+39)=171,终止:171-44*2-39,开始:171-44*3-39+1

' Unload lblOK(i) '卸掉第1行的标示对错的颜色标签,节约内存

' Next '实时错误'340',控件数组元素'1'不存在,卸过一次后又再卸

' lblEgg(7).Caption = Mid$(StrText, mNumber * 44 + 1, 44) '继续的文字内容(后面第4行,如果例现在是第6行,后面剩2行,后第4行就越过算到正数第2行

'End If

'If Hang = 3 And No = (44 - 6) Then '(44 - 5),上面示例旧文本的消失与显示新文本

If lblEgg((Hang + 4) Mod 8).Caption = "" And No = (44 - 6) Then

'If lblEgg(Hang - 3).Caption "" Then '检测前面第3行是否已经空掉,因为怕重复,如打过第4行第40个,然后又删除,然后再打会重复,导致后面第4行的内容会变化

If lblEgg((Hang + 5) Mod 8).Caption "" Then

lblEgg((Hang + 5) Mod 8).Caption = "" ''lblEgg((Hang - 3) Mod 8).Caption = ""

For i = Num - 44 * 3 - 39 + 1 To Num - 44 * 2 - 39 + 1

Unload lblOK(i)

Next

lblEgg((Hang + 4) Mod 8).Caption = Mid$(StrText, mNumber * 44 + 1, 44) '(Hang + 4) Mod 7

mNumber = mNumber + 1

End If

End If

If Hang = 6 And No = (44 - 6) Then TypeSPace = True '模拟打字区的旧文本消失,当打到第6行(倒数第2行),第0行开始消失,Hang-6(前第6行),Hang+2(后第2行)

If lblType((Hang + 2) Mod 8).Caption "" And TypeSPace Then

'TypeHang = Hang + 2

'if typehang=8 then typehang=0

'lblType(Hang - 6).Caption = ""

lblType((Hang + 2) Mod 8).Caption = ""

End If

lblType(Hang).Caption = lblType(Hang).Caption Mid$(txtType.Text, Len(txtType.Text), 1) 'txtType.Text

'Debug.Print txtType.SelStart

'Debug.Print Num

Num = Num + 1

Load lblOK(Num)

If Mid$(lblType(Hang).Caption, Len(lblType(Hang).Caption), 1) = Mid$(lblEgg(Hang).Caption, Len(lblType(Hang).Caption), 1) Then

lblOK(Num).BackColor = vbGreen '正确就用绿色,65280

lblOK(Num).Tag = 1

mTrue = mTrue + 1 '正确的字数

lblTrue.Caption = "对:" mTrue

Else

lblOK(Num).BackColor = vbRed '错误就用红色,255

lblOK(Num).Tag = 0

mFalse = mFalse + 1 '错误的字数

lblFalse.Caption = "错:" mFalse

End If

'算出正确率

mTF = mTrue / (mTrue + mFalse) * 1000

lblTF.Caption = mTF

With lblOK(Num)

If Num Mod 44 = 1 Then

'Select Case Num

'Case 44 * 1 + 1

'Hang = Num \ 44 '打完一行,就开始打下一行

.Left = 50

Else

.Left = lblOK(Num - 1).Left + lblOK(Num - 1).Width '上一个之后

End If

If (Num - 1) \ 44 = 1 Then '如果不是第一行,每行44个字

'.Top = 50 + (Num - 1) \ 30 * 180 'TextHeight(Mid$(txtType.Text, Len(lblType.Caption), 1))

'.Top = lblOK(Num - 30).Top + lblOK(Num - 30).Height ' 180 + 60

.Top = lblEgg(Hang).Top

Else

.Top = 0 '50

End If

.Caption = Mid$(lblEgg(Hang).Caption, Len(lblType(Hang).Caption), 1)

.AutoSize = True

.Visible = True

End With

Line1.X1 = lblOK(Num).Left + lblOK(Num).Width: Line1.X2 = lblOK(Num).Left + lblOK(Num).Width

Line1.Y1 = lblOK(Num).Top: Line1.Y2 = lblOK(Num).Top + 250

If Num Mod 44 = 0 And Num 0 Then 'Hang 0

Line1.X1 = lblType(Hang + 1).Left - 1: Line1.X2 = lblType(Hang + 1).Left - 1

Line1.Y1 = lblType(Hang + 1).Top: Line1.Y2 = lblType(Hang + 1).Top + 250

End If

End Sub

几种经典的二值化方法及其vb.net实现

图像二值化的目的是最大限度的将图象中感兴趣的部分保留下来,在很多情况下,也是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。这个看似简单的问题,在过去的四十年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法,但如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果。

本文针对几种经典而常用的二值发放进行了简单的讨论并给出了其vb.net 实现。

1、P-Tile法

Doyle于1962年提出的P-Tile (即P分位数法)可以说是最古老的一种阈值选取方法。该方法根据先验概率来设定阈值,使得二值化后的目标或背景像素比例等于先验概率,该方法简单高效,但是对于先验概率难于估计的图像却无能为力。

2、OTSU 算法(大津法)

OSTU算法可以说是自适应计算单阈值(用来转换灰度图像为二值图像)的简单高效方法。1978 OTSU年提出的最大类间方差法以其计算简单、稳定有效,一直广为使用。

3、迭代法(最佳阀值法)

(1). 求出图象的最大灰度值和最小灰度值,分别记为Zl和Zk,令初始阈值为:

(2). 根据阈值TK将图象分割为前景和背景,分别求出两者的平均灰度值Z0和ZB:

式中,Z(i,j)是图像上(i,j)点的象素值,N(i,j)是(i,j)点的权值,一般取1。

(3). 若TK=TK+1,则所得即为阈值,否则转2,迭代计算。

4、一维最大熵阈值法

它的思想是统计图像中每一个灰度级出现的概率 ,计算该灰度级的熵 ,假设以灰度级T分割图像,图像中低于T灰度级的像素点构成目标物体(O),高于灰度级T的像素点构成背景(B),那么各个灰度级在本区的分布概率为:

O区: i=1,2……,t

B区: i=t+1,t+2……L-1

上式中的 ,这样对于数字图像中的目标和背景区域的熵分别为:

对图像中的每一个灰度级分别求取W=H0 +HB,选取使W最大的灰度级作为分割图像的阈值,这就是一维最大熵阈值图像分割法。

VB现在还实用么?学习VB 买什么书好呢?怎么学习?

VB很实用哦,建议直接学vb2008及以上版本的

vb.net入门经典----让你入门

Visual Basic 2008高级编程---搞懂该书你就毕业了

Vb2008以上版本写程序效率非常高,智能化程度高,完全不逊色C#


分享标题:vb.net经典练习 vbnet using
标题链接:http://scyanting.com/article/doghhii.html