就簡單實現一下卡拉OK的字幕效果 * 字的顏色變化是線性變化,即隨時間的線性變化 而不是按字的單位變顏色的 所以有時候是字的一部分變顏色 主要代碼實現如下: Graphics g = pea.Graphics; string str = "信號ねぇ あるわけねぇ 俺ら村には電気がねぇ!"; Pen ...
就簡單實現一下卡拉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上畫出歌詞。
僅供參考