Я хотел бы подключить индикатор выполнения к моему синтезатору речи в моем приложении (чтобы показать, насколько далеко он читает текст).
Основные компоненты моего кода SpeechSynthesizer следующие:
private void button1_Click(object sender, EventArgs e)//Start button
{
reader.Dispose();
if (Basic_Word_Processor.Instance.richTextBoxPrintCtrl1.Text != "")
{
reader = new SpeechSynthesizer();
reader.SpeakAsync(Basic_Word_Processor.Instance.richTextBoxPrintCtrl1.Text);
button2.Enabled = true;
button4.Enabled = true;
reader.SpeakCompleted += new EventHandler<SpeakCompletedEventArgs>(reader_SpeakCompleted);
}
else
{
MessageBox.Show("Please insert text before launching Text to Speech.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private void button2_Click(object sender, EventArgs e)//Pause button
{
if (reader != null)
{
if (reader.State == SynthesizerState.Speaking)
{
reader.Pause();
button3.Enabled = true;
}
}
private void button3_Click(object sender, EventArgs e)//Resume button
{
if (reader != null)
{
if (reader.State == SynthesizerState.Paused)
{
reader.Resume();
}
button3.Enabled = false;
}
}
private void button4_Click(object sender, EventArgs e)//Stop button
{
if (reader != null)
{
reader.Dispose();
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
}
}
Я хотел бы связать этот код с индикатором выполнения, чтобы он отображал текущий статус синтезатора речи (и приостанавливал/останавливал, когда пользователь приостанавливал/останавливал индикатор выполнения. Возможно ли это? Я никогда не использовал индикатор выполнения правильно, поэтому мне нужна помощь в том, как это сделать.
Спасибо.
reader.SpeakAsync()
не из таких. Вы можете создать поддельный индикатор выполнения, оценив, сколько времени потребуется для чтения текста заданной длины, и продвигаясь на основе этого. Они гораздо более распространены, о чем свидетельствуют установщики, которые снова и снова заполняют свою планку ... - person Bobson   schedule 29.04.2013