SemanticValue.Count Propriedade
Definição
Retorna o número de objetos SemanticValue filho sob a atual instância SemanticValue.Returns the number of child SemanticValue objects under the current SemanticValue instance.
public:
property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer
Valor da propriedade
O número de SemanticValue objetos filho sob o atual SemanticValue .The number of child SemanticValue objects under the current SemanticValue.
Implementações
Exemplos
O exemplo a seguir mostra um manipulador para um SpeechRecognized evento projetado para manipular comandos para alterar a cor do primeiro plano e do plano de fundo.The following example shows a handler for a SpeechRecognized event designed to handle commands to change foreground and background color.
O manipulador identifica frases reconhecidas que não têm nenhuma estrutura semântica subjacente detectando um Count de zero e um Value de null .The handler identifies recognized phrases that have no underlying semantic structure by detecting a Count of zero and a Value of null. Essa saída de reconhecimento é processada diretamente pela análise do texto bruto.This recognition output is then processed directly by parsing the raw text.
Em outros casos, o manipulador usa chaves para obter os componentes RGB de um nome de cor, para determinar se o comando irá alterar o primeiro plano ou o plano de fundo ou para indicar que nenhuma chave válida foi encontrada.In other cases, the handler uses keys to obtain the RGB components of a color name, to determine whether the command will change the foreground or background, or to indicate that no valid key was found.
newGrammar.SpeechRecognized +=
delegate(object sender, SpeechRecognizedEventArgs eventArgs)
{
// Retrieve the value of the semantic property.
bool changeBackGround = true;
string errorString = "";
SemanticValue semantics = eventArgs.Result.Semantics;
Color newColor = Color.Empty;
try
{
if (semantics.Count == 0 && semantics.Value==null)
{
// Signifies recognition by a grammar with no semantics.
// Parse the string, assuming that the last word is color,
// searching for background or foreground in input.
if (eventArgs.Result.Text.Contains("foreground"))
{
changeBackGround = false;
}
string cName = eventArgs.Result.Words[eventArgs.Result.Words.Count - 1].Text;
newColor = Color.FromName(cName);
}
else if (semantics.ContainsKey("colorStringList") ^ semantics.ContainsKey("colorRGBValueList"))
{
// Determine whether to change background or foreground.
if (semantics.ContainsKey("applyChgToBackground"))
{
changeBackGround = semantics["applyChgToBackground"].Value is bool;
}
// Get the RGB color value.
if (semantics.ContainsKey("colorStringList"))
{
newColor = Color.FromName((string)semantics["colorStringList"].Value);
}
if (semantics.ContainsKey("colorRGBValueList"))
{
newColor = System.Drawing.Color.FromArgb((int)semantics["colorRGBValueList"].Value);
}
}
else
{
// Throw an exception if the semantics do not contain the keys we
// support.
throw(new Exception("Unsupported semantics keys found."));
}
}
catch (Exception exp)
{
MessageBox.Show(String.Format("Unable to process color semantics.:\n{0}\n", exp.Message));
return;
}
// Change colors, either foreground or background.
if (changeBackGround)
{
BackColor = newColor;
float Bright = BackColor.GetBrightness();
float Hue = BackColor.GetHue();
float Sat = BackColor.GetSaturation();
// Make sure that text is readable regardless of background.
if (BackColor.GetBrightness() <= .50)
{
ForeColor = Color.White;
}
else
{
ForeColor = Color.Black;
}
}
else
{
ForeColor = newColor;
float Bright = ForeColor.GetBrightness();
float Hue = ForeColor.GetHue();
float Sat = ForeColor.GetSaturation();
// Make sure that text is readable regardless of Foreground.
if (ForeColor.GetBrightness() <= .50)
{
BackColor = Color.White;
}
else
{
BackColor = Color.Black;
}
}
return;
};
Comentários
Os resultados de reconhecimento que não fazem uso da análise semântica sempre têm um Count valor de zero, bem como um Value de null .Recognition results that do not make use of semantic parsing always have a Count value of zero, as well as a Value of null.