如何做象卡拉OK那样功能的程序?(100分)

  • 主题发起人 主题发起人 waderlym
  • 开始时间 开始时间
W

waderlym

Unregistered / Unconfirmed
GUEST, unregistred user!
我的意思是:
有包含字符和它显示时间信息的 文件 ,读文件后将这字用某个空件用红色显示出来 大小可以调节 还可以移动,然后显示红色的时间 刚好是对应的时间,问题的重点在于 如何做到这样的功能 读文件这不是重点。
比如: ‘他是猪!’ 如何将这4个字符显示出来 并且针对每个字符的时间染成红色,时间过了显示黑色。
提供思路和程序都可以!!!谢谢!!!本人没做过这样的功能。
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ExtDlgs;

type
TForm1 = class(TForm)
Image1: TImage;
OpenPictureDialog1: TOpenPictureDialog;
Timer1: TTimer;
Button1: TButton;
Label1: TLabel;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
nowStep: Integer;
const
MaxStep = 40;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Image1.Canvas.Font.Name := '楷体_GB2312';
Image1.Canvas.Font.Size := 20;
Image1.Canvas.Font.Style := [fsBold]; //加粗
nowStep := 0;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.ItemIndex := 0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
outputstring: string;
x0,y0:Integer;
width:Integer;
begin
x0:=10;
y0:=10;
outputstring := '卡拉OK字幕效果示例';
if nowStep >= MaxStep then
nowStep := 0;
if nowStep=0 then //不变
begin
Image1.Canvas.Brush.Style:= bsClear;
Image1.Canvas.Font.Color:=clBlack;
Image1.Canvas.TextOut(x0,y0,outputstring );
end
else //变化
begin
Image1.Canvas.Brush.Style:=bsClear;
Image1.Canvas.Font.Color:=clRed;
width:=Image1.Canvas.TextWidth(outputstring);
Image1.Canvas.TextRect(Rect(x0,y0,x0+width*nowstep div MaxStep ,y0+image1.Canvas.TextHeight(outputstring))
,x0,y0,outputstring);
end;
nowStep:=nowStep+strtoint(ComboBox1.Items[ComboBox1.itemindex]);
end;

end.
 
用专门的卡拉OK制作软件吧
 
可能是我没说清楚吧 !! 第一 我要显示的不是图片 而是字 ,就是从任何文件读取的字符,第二 ,需要把字形转化成可以调节的大小 然后在canvas上显示 然后最好都用widestring这样我就不用判断是否多字节字符 ,第三;是染色不是改变颜色 ,就是在一个时间段内 由左到右的对一个字符进行颜色变化 这样才有时间感,这不用API估计没办法做到的 最好 是可以象WINAMP显示歌词那样能滚动 ;
提供一个思路或者是某个功能程序就可以 分不够的哼下就好了 谢谢杯中水!!!
 
我只需要那几个功能 因为可以自己定义格式和算法
 
http://www.delphibox.com/
有个完整的例子 叫什么超级播放器?看看然后再说吧 我也没做过
 
多人接受答案了。
 

Similar threads

后退
顶部