用vb.net实现写字板程序报告(二)

原创 2003年10月27日 02:06:00

所有源代码均在这里下载:

http://www.up2e.com/resource.php

 

用vb.net实现写字板程序报告(二) --by zigz(LuHai)
luluhai@eastday.com

 

3)            状态栏的隐藏

就是在“查看”菜单中有个check按钮,当checked=true时点击它状态栏就隐藏,反之就取消隐藏。

Private Sub mStatusbar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mStatusbar.Click

        If mStatusbar.Checked = True Then

            StatusBar1.Visible = False

            mStatusbar.Checked = False

        Else

            StatusBar1.Visible = True

            mStatusbar.Checked = True

        End If

End Sub

 

4关于字体样式的问题

我觉得这是这个程序中最艰难的一部分,为了实现这个功能,查阅了不少资料,最终得以实现不用字体对话框设置,只用工具栏上按钮设置就能实现几个字体样式并用的功能。

3字体样式并用

上图中的“样”字就是既加粗又斜体又下划线,不要以为这个功能实现很简单,因为最初我发现如果一个字是加粗的,当我给他选择斜体按钮时,发现她原来的粗体样式消失了,变成只有斜体样式了,也就是说字体的样式不能并用,后来终于发现解决的方法。

其中的一个“or”确实十分关键,其了决定性作用。关键还是对VB的语法不太熟悉,如果是C++语言就好了。下面看看代码

'下面这个函数是用来增加字体的样式,比如加粗,下划线等等

    Public Sub AddFontStyle(ByVal rtb As RichTextBox, _

    ByVal style As System.Drawing.FontStyle)

        ' 如果选择的文本长度大于0,将一个一个字符地增加样式。

        '这是十分必要的!因为被选择的字符可能同时含有多种样式,

        ' 而我们的原意只是保持所有原来的样式,同时增加上指定的样式

        If rtb.SelectionLength > 0 Then

            Dim selStart As Integer = rtb.SelectionStart

            Dim selLength As Integer = rtb.SelectionLength

            Dim currFont As System.Drawing.Font

            Dim currStyle As System.Drawing.FontStyle

            Dim i As Integer

            For i = 0 To selLength - 1

                ' 选择的字符

                rtb.Select(selStart + i, 1)

                ' 得到被选择字符的字体

                currFont = rtb.SelectionFont

                ' 得到现在的样式,同时增加指定的样式

                currStyle = currFont.Style

                currStyle = currStyle Or style

                ' 然后使字符拥有新的字体和新的样式,有可能出现异常,

                '因为不是所有字体都支持所有的样式,所以这里捕捉异常

                Try

                    rtb.SelectionFont = New Font(currFont.FontFamily, currFont.Size, _

                        currStyle)

Catch ex As Exception

                End Try

            Next

            rtb.Select(selStart, selLength)

        Else

            rtb.SelectionFont = New Font(rtb.SelectionFont, _

                rtb.SelectionFont.Style Or style)

        End If

    End Sub

同样,取消样式也有同样的问题,当然也有同样的解决方法

'下面这个函数是用来去除用户指定的字体样式,如加粗,下划线等等

    Public Sub RemoveFontStyle(ByVal rtb As RichTextBox, _

    ByVal style As System.Drawing.FontStyle)

        ' 如果选择文本的长度大于0,将一个一个去除样式。

        ' 这是十分必要的!因为选择的文本中可能有许多不同的样式,而我们的原意是

        ' 保持所有原来的样式,除了那个要被去除的样式

        If rtb.SelectionLength > 0 Then

            Dim selStart As Integer = rtb.SelectionStart

            Dim selLength As Integer = rtb.SelectionLength

            Dim currFont As System.Drawing.Font

            Dim currStyle As System.Drawing.FontStyle

            Dim i As Integer

            For i = 0 To selLength - 1

                ' 选择一个字符

                rtb.Select(selStart + i, 1)

                ' 得到被选择字符的字体

                currFont = rtb.SelectionFont

                ' 得到被选择字符的样式,同时去除要被除去的那个样式

                currStyle = currFont.Style

                currStyle = currStyle And Not style

                ' 然后赋予这些字符新的字体和样式

                rtb.SelectionFont = New Font(currFont.FontFamily, currFont.Size, _

    currStyle)

            Next

            ' 保持原有的选择

            rtb.Select(selStart, selLength)

        Else

            rtb.SelectionFont = New Font(rtb.SelectionFont, _

                rtb.SelectionFont.Style And Not style)

        End If

    End Sub

 

还有几个关于设置字体大小,字体的字体等等就不细说了,如您需要,我可提供所有源代码文件。欢迎与我联系。

luluhai@eastday.com

 

未完待续......

 

用vb.net实现写字板程序报告(一)

  • zgqtxwd
  • zgqtxwd
  • 2008年04月24日 11:47
  • 134

用vb.net实现写字板程序报告(三)

所有源代码均在这里下载:http://www.up2e.com/resource.php用vb.net实现写字板程序报告(三)---by zigz(LuHai)luluhai@eastday.com3...
  • zigz
  • zigz
  • 2003年10月27日 02:06
  • 923

用vb.net实现写字板程序报告(四)完

所有源代码均在这里下载:http://www.up2e.com/resource.php用vb.net实现写字板程序报告(四)完 ---by zigz (LuHai)luluhai@eastday.c...
  • zigz
  • zigz
  • 2003年10月27日 02:06
  • 737

编写一个写字板初步了解Winform编程(二)——界面设计

编写一个写字板初步了解Winform编程(二)——界面设计 只是界面设计,看看常用的控件叫做什么名字,是什么样子。...
  • kydkong
  • kydkong
  • 2015年11月14日 17:09
  • 1724

用java模拟写字板程序

源程序代码:import java.awt.Color;import java.awt.Container;import java.awt.FlowLayout;import java.awt.Gra...
  • cf527085608
  • cf527085608
  • 2009年11月25日 09:37
  • 2145

Android绘图基础--简易写字板

/** * 自定义一个写字板 * @description:自定义一个控件,实现一个可以手写的效果,后期是要实现刮刮卡抽奖效果,待续…. */ @SuppressLint(“DrawAl...
  • true100
  • true100
  • 2015年12月03日 10:09
  • 853

用vb.net实现类似写字板程序的部分源代码

  • zgqtxwd
  • zgqtxwd
  • 2008年04月24日 15:31
  • 293

打开xml的时候不要用写字板

- -,昨天在作项目的时候由于着急使用写字板打开了一个xml,修改了点数据结果导致,程序不能在用这个xml~特此提醒,用记事本就没有问题咯~~ ...
  • AngelLiujia
  • AngelLiujia
  • 2006年11月12日 11:35
  • 711

Android之使用SurfaceView制作简易写字板

有人说SurfaceView是View的孪生兄弟,其实SurfaceView也是继承自View的,不过View的绘制只能在主线程,而SurfaceView却可以在子线程中进行绘制。本文我们不介绍Sur...
  • Leavessilent
  • Leavessilent
  • 2017年02月17日 23:26
  • 615

QT涂鸦窗口/写字板

在QT中要实现一个涂鸦窗口是非常简单的事情,先将项目早期用到的涂鸦窗口抽取出来做成一个通用的模型,方便以后的项目中可以使用。...
  • shayu8326
  • shayu8326
  • 2017年05月13日 22:46
  • 182
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用vb.net实现写字板程序报告(二)
举报原因:
原因补充:

(最多只允许输入30个字)