歌词文件解析(二):LRC格式文件的绘制

  通过对LRC文件的解析,可以轻松实现歌词可视化.



函数名:

paintLyrics(ByVal pBox As PictureBox, ByVal CurrentPosition As Integer, ByVal type As Boolean, Optional ByVal pLyric As LyricClass = Nothing)

参数:

pBox:用于绘制歌词的Picturebox

CurrentPosition:当前歌词的时间进度,单位为秒(Second)

type:值为True时强行绘制歌词

pLyric:可选参数,要绘制的歌词类(LyricClass)

功能:

1.歌词居中显示

2.自动匹配显示行数

3.当前歌词突出显示


  ‘绘制歌词
    Public Sub paintLyrics(ByVal pBox As PictureBox, ByVal CurrentPosition As Integer, ByVal type As Boolean, Optional ByVal pLyric As LyricClass = Nothing)
        Dim stringFormat As New StringFormat() With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Center}
        Dim tempI, tempII, pWidth, pHeight As Integer
        Dim myfont As Font
        Dim mybrush As SolidBrush
        Dim bmp As Bitmap
        For i = 0 To LyricData.Count - 1
            If CurrentPosition * 100 > LyricData.LyricTime(LyricData.Count - 1 - i) Then
                tempII = LyricData.Count - 1 - i
                Exit For
            End If
            tempII = -1
        Next
        If Not tempII = tempI Or type = True Then
            If pLyric Is Nothing Then pLyric = Me
            tempI = tempII
            myfont = New Font("微软雅黑", 16)
            mybrush = New SolidBrush(Color.FromArgb(158, 0, 0, 0))
            pWidth = pBox.Width : pHeight = pBox.Height
            bmp = New Bitmap(pWidth, pHeight)
            Dim pg As Graphics = Graphics.FromImage(bmp)
            pg.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
            For i = 0 To pHeight ‘绘制渐变背景
                pg.DrawLine(New Pen(Color.FromArgb(10 + Math.Abs(i / (pHeight / 255) - 128), 0, 0, 0), 1), 0, i, pWidth, i)
            Next
            If pLyric.LyricData.Count = 0 Then
                pg.DrawString("未找到歌词", myfont, mybrush, pWidth / 2, pHeight / 2, stringFormat)
            Else
                For i = 1 To pHeight / 80
                    If tempI - i >= 0 Then pg.DrawString(pLyric.LyricData.LyricString(tempI - i), myfont, mybrush, pWidth / 2, pHeight / 2 - i * 40, stringFormat)
                    If tempI + i <= pLyric.LyricData.Count - 1 Then pg.DrawString(pLyric.LyricData.LyricString(tempI + i), myfont, mybrush, pWidth / 2, pHeight / 2 + i * 40, stringFormat)
                Next
                myfont = New Font("微软雅黑", 18)
                mybrush = New SolidBrush(Color.FromArgb(218, 0, 0, 0))
                If tempI >= 0 And tempI <= pLyric.LyricData.Count - 1 Then pg.DrawString(pLyric.LyricData.LyricString(tempI), myfont, mybrush, pWidth / 2, pHeight / 2, stringFormat)
            End If
            pBox.Image = bmp
            pg.Dispose()
        End If
    End Sub
时间: 2024-08-27 01:07:31

歌词文件解析(二):LRC格式文件的绘制的相关文章

歌词文件解析(一):LRC格式文件的解析

LRC是英文lyric(歌词)的缩写,被用做歌词文件的扩展名.以lrc为扩展名的歌词文件可以在各类数码播放器中同步显示.LRC 歌词是一种包含着“*:*”形式的“标签(tag)”的基于纯文本的歌词专用格式. 1.标识标签(ID-tags) [ar:艺人名] [ti:曲名] [al:专辑名] [by:编者(指编辑LRC歌词的人)] [offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反.这是用于总体调整显示快慢的. [ti:山丘] [ar:李宗盛] [offset:0] 2.时间标

【转】java将excel文件转换成txt格式文件

在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件.下面代码里面提供对xls.xlsx两种格式的excel文件解析,并写入到一个新的txt文件中,数据以分隔符逗号","隔开. excel文件如图所示: 转换后的txt文件: 需要依赖4个jar包: package com.xuan.excel; import java.io.BufferedWriter; import java.io.File; import java.io.

如何将pdf文件转换成cad格式文件

pdf文件是一个封闭性文件,文件不仅不容易编辑修改,而且还可能被加密了,那么如何将pdf文件转换成cad格式文件呢? 下面小编教大家使用pdf转换器实现以上操作,具体步骤如下. 第一步:搜索迅捷pdf在线转换器(http://app.xunjiepdf.com/pdf2cad),找到相关页面点击进入在线网站主页面,进入页面后,用我们鼠标点到文档转换,找到CAJ转Word那个栏目. 第二步:点击"选择文件"选择需要处理的文件.如果想要一次性处理多个文件,那么我们可以继续添加文件(批量转换

CAD文件转换成DWF格式文件怎么在转换器中转换?

CAD文件转换成DWF格式文件怎么在转换器中转换?大家都知道DWF文件是一种高度压缩.开放.安全的文件格式,它可以将丰富的设计数据高效的分发给需要查看.评审或者打印这些数据的人看,因为在编辑器中编辑完的图纸都是dwg格式的,所以就需要将CAD图纸进行转换,那CAD文件转换成DWF格式文件怎么在转换器中转换?具体要怎么来进行操作?下面小编就来教教大家,想要了解的朋友也可以一起来看看,希望能够帮助到你们. 第一步:打开电脑,在电脑桌面上任意的打开一个浏览器,在浏览器的搜索框中搜索迅捷CAD转换器,然

【有码】ELF文件解析器支持x86x64ELF文件

先贴两个图 32位文件 64位文件 此文为静态分析ELF文件结构,遍历其中Elf_Ehdr文件头信息,遍历Elf_Shdr节表头信息,并将所有节放置在左侧树控件上,遍历Elf_Phdr程序头也放置在左侧树控件上,并着重分析字符串表,重定位表,符号表.遍历表头的使用使用map将节表信息对应字符串存入,当点击树控件的时候取出显示在右侧. 遍历程序头 Elf64_Phdr* Phdr = (Elf64_Phdr*)(m_szFileData+Elf_Ehdr->e_phoff); for(int i

python:将xml格式文件转换成json格式文件

由于json格式的文件在处理起来,有很强的便利性,而工作中每天产生大量的xml格式的文件,所以有需求将xml格式的文件转换成json格式的文件.下面直接贴出代码,有两个版本,根据需求自由选择: #!/usr/bin/python # -*- coding: utf-8 -*- #Function:Xml_To_Json #version 1.0 #Author: Herman #需要用到的两个模块 import xmltodict; import json; #定义函数 def pythonXm

音频文件解析(二):WAV格式文件波形绘制

解析WAV头部信息后,接下来就可以根据相关参数和DATA块数据绘制波形. 1.重新编码(转换为8bits,单声道数据) Public Function GetFormatData(ByVal pData() As Byte, ByVal pWaveHeader As waveHeaderStructre) As Byte() Dim temp As Integer Dim data() As Byte = {} If pWaveHeader.BitsPerSample = 8 And pWave

Java文件操作二:File文件的方法

一.文件的判断方法 判断方法 1.boolean canExecute()判断文件是否可执行 2.boolean canRead()判断文件是否可读 3.boolean canWrite() 判断文件是否可写 4.boolean exists() 判断文件是否存在 5.boolean isDirectory() 6.boolean isFile() 7.boolean isHidden() 8.boolean isAbsolute()判断是否是绝对路径 文件不存在也能判断 二.文件的各种获取属性

python xml文件解析 及生成xml文件

#解析一个database的xml文件 """ <databaselist type="database config"> <database> <host>localhost</host> <username>root</username> <password>11111</password> <datasename>wulaoshi</da