zoukankan      html  css  js  c++  java
  • DSAPI 图形图像篇(上)

    彩色文字对象

    基于一些特殊需求,本人开发了彩色文字对象,该功能通过类似html代码的方式指示文本,并输出图像.

    我们还是先来看一张图像.

    这不是文本,是通过指定文本代码输出的图像.我们来看一下实现代码.

     Dim DSL As New DSAPI.图形图像.彩色文字图像
            With DSL
                .画布尺寸 = Me.Size '告诉彩色文字引擎最宽能画到多少
                .绘制描边 = True
                .绘制阴影 = True
                .描边颜色 = Color.Black
                .文字清晰度 = Drawing.Text.TextRenderingHint.AntiAliasGridFit
                .文字颜色 = Color.Yellow
                .阴影大小 = 5
                .阴影浓度 = 30
                .阴影偏移量 = New Point(0, 0)
                .字符行距 = 3
                .字符间距 = 1
                .链接下划线颜色 = Color.Red
                .字体 = New Font("宋体", 9)
                Dim S As String = "你好,我是<color=255,0,255>彩</color><color=0,255,255>色</color><color=0,255,0>文</color><color=0,0,255>字</color>"
                S &= vbCrLf & "<color=255,255,255>这是<b>粗体</b>,这是<i>斜体</i>,还有<u>下划线</u>"
                S &= vbCrLf & "还能插入<font=微软雅黑>其他字体</font></color>"
                S &= vbCrLf & "如果你愿意,还能加入<color=0,255,0><link=http://www.baidu.com>链接</link></color>"
                .代码文本 = S
                Me.BackgroundImage = .输出图像
    

      

    是不是让你想到了游戏里的字幕呢?是的,只要效果实现了,你想用在哪里都可以.但同时你也注意到了,里面有链接代码.既然只是图片,这个链接有什么用呢?当然了,图片肯定是要设置给某个控件的,不然哪里显示图片呢?链接是带有坐标信息的,当你的代码中使用到了链接,那么你可以在控件的MouseMove或者MouseDown事件里检测鼠标位置是否是链接,并且是什么链接.
    一切属性的设置,都将在获取输出图像时应用.所以,如果你需要获取显示的文本,也就是去除了代码的文本内容,那么你需要先获取输出图像后再输出显示文本.

    Me.BackGroundImage=DSL.输出图像
    Console.WriteLine(DSL.显示文本)
    

     输出结果:

    你好,我是彩色文字
    这是粗体,这是斜体,还有下划线
    还能插入其他字体
    如果你愿意,还能加入链接
    

      链接的获取

    Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown
            Dim 链接 As DSAPI.图形图像.彩色文字图像.链接 = DSL.获取指定坐标的链接(e.Location)
            If 链接 IsNot Nothing Then
                '如果鼠标指针位置有链接,则显示链接信息
                MsgBox(链接.LinkTarget)
            End If
        End Sub
     
        Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
            Dim 链接 As DSAPI.图形图像.彩色文字图像.链接 = DSL.获取指定坐标的链接(e.Location)
            If 链接 IsNot Nothing Then
                '如果鼠标指针位置有链接,则为手型
                Me.Cursor = Cursors.Hand
            Else
                '反之为箭头
                Me.Cursor = Cursors.Default
            End If
        End Sub
    

      

  • 相关阅读:
    Jetson Nano更改软件源
    树莓派开机启动VNC
    树莓派VNC复制粘贴
    数学之美-泰勒公式
    C++顺序容器
    eigen的简单用法汇总
    C++并发-同步并发
    C++ string类
    C++并发-互斥元
    Nginx常用命令
  • 原文地址:https://www.cnblogs.com/dylike/p/10433485.html
Copyright © 2011-2022 走看看