卡拉OK字幕效果制作
就简单实现一下卡拉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上画出歌词。
仅供参考