作者:临别一眼_200910 | 来源:互联网 | 2024-10-10 13:28
就简单实现一下卡拉OK的字幕效果*字的颜色变化是线性变化,即随时间的线性变化而不是按字的单位变颜色的所以有时候是字的一部分变颜色主要代码实现如下:Graphics
就简单实现一下卡拉OK的字幕效果
* 字的颜色变化是线性变化,即随时间的线性变化 而不是按字的单位变颜色的
所以有时候是字的一部分变颜色
主要代码实现如下:
Graphics g = pea.Graphics;
string str = "信号ねぇ あるわけねぇ 俺ら村には電気がねぇ!";
Pen myPen = new Pen(Color.Red);
SolidBrush backBr = new SolidBrush(Color.Blue);
Font fOnt= new Font("MS UI Gothic", 40);
g.DrawString(str, font, backBr, new Point(10, 10)); //background文字描画(blue)
SizeF size = g.MeasureString(str, font); //描画された文字のサイズを計測
SolidBrush foreBr = new SolidBrush(Color.Red); //foreground文字色(red)
RectangleF rectF = new RectangleF(10, 10, 10, size.Height); //forground文字の描画領域
StringFormat strFmt = new StringFormat();
strFmt.FormatFlags = StringFormatFlags.NoWrap; //折り返し無し
strFmt.Trimming = StringTrimming.None; //切離し無し
for (int w = 1; w <= size.Width; w += 1)
{
rectF.Width = w;
try {
//g.DrawRectangle(Pens.Blue, rectF.Left, rectF.Top, rectF.Right, rectF.Bottom);
g.DrawString(str, font, foreBr, rectF, strFmt); //foreground文字描画
Thread.Sleep(5); //speed調整(動的に調整すること)
Application.DoEvents();
} catch (Exception e)
{
return;
}//end try
}//end for
具体的歌曲按照具体歌词的速率来调整 Sleep()就可以了。 这一部分可以写一个类,输入要显示的歌词,速度等信息,这个类在CDC上画出歌词。
仅供参考