2014-06-11 1 views
0

Сейчас я пытаюсь создать помощник распознавания голоса (в основном программу JARVIS) с помощью C#. Я начал писать код в визуальной студии, и как только код работал, я перешел к выражению blend для работы с пользовательским интерфейсом.Как заменить стандартное окно WPF на пользовательское окно?

Я успешно импортировал изображения и анимировал их в цикле. В этот момент, когда я запускал программу, все работало (включая анимацию и распознавание речи). Следующим шагом я попросил «заменить» стандартное окно изображениями, которые я только что импортировал, установив прозрачное стандартное окно. Используя панели, я затем установил все кисти «без кисти», и я установил allowstranparency на «true». Когда я запускал программу, анимация по-прежнему работала, но программа остановила весь код распознавания голоса.

В процессе устранения я выделил проблему на фоне кисти и функции allowstransparency. Если я либо установлю допустимую пропускную способность на истинный, либо беспорядочный с фоновым кистью, то больше нет распознавания речи.

Я новичок в кодировании, поэтому единственная причина, по которой я могу думать (и я даже не знаю, является ли это причиной), заключается в том, что каталог распознавания речи и функции сопоставляются с окном.

Есть ли причина, почему это происходит/есть ли исправление?


EDIT: Код добавлен

public MainWindow() 
    { 
     InitializeComponent(); 
     Loaded += MainWindow_Loaded; 
    } 

    private void MainWindow_Loaded(object sender, EventArgs e) 
    { 
     _recognizer.SetInputToDefaultAudioDevice(); 
     _recognizer.LoadGrammar(new Grammar(new GrammarBuilder(new Choices(File.ReadAllLines(@"C:\users\username\Documents\commands.txt"))))); 
     _recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_recognizer_SpeechRecognized); 
     _recognizer.RecognizeAsync(RecognizeMode.Multiple); 
    } 
    void _recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
    { 
     int ranNum = rnd.Next(1, 10); 
     string speech = e.Result.Text; 
     switch (speech) 
     { 
      //INTERACTIONS 
      case "hello": 

... и так далее

+0

Я не понимаю, когда вы говорите, «замените» стандартное окно изображениями, которые я только что импортировал, установив прозрачное стандартное окно ». Как вы можете заменить окно изображениями? Вы имеете в виду, что вы устанавливаете фон на изображение? –

+0

Когда программа запускается, я хочу, чтобы пользовательский интерфейс отображал только анимацию, а не окно. В частности, изображение (которое является круглым по форме) будет служить главным окном. Вот почему я установил прозрачное окно, чтобы отображались только изображения. – user3731896

+0

Я вижу. Как всплеск? –

ответ

0

Вам нужно выполнить четыре шага, чтобы сделать ваше окно "Исчезают":

  1. Window.WindowStyle набор равным «Нет».
  2. Window.Background устанавливается равным «Прозрачный»
  3. Window.BorderThickness устанавливается равным «0»
  4. Window.AllowsTransparency устанавливается равным «True»

Я не вижу никаких оснований для вашего распознавания речи быть привязаны к окну внешний вид, но вам нужно опубликовать код; код инициализации и использование некоторых примеров, вероятно, будут очень полезны при диагностике остальной части проблемы.

Если вам нужно щелкнуть по частям пользовательского интерфейса, вам может потребоваться установить фон в «почти прозрачный» цвет вместо чистой прозрачной кисти. Причиной этого является; когда фон является чисто «прозрачным», он больше не обнаруживает события щелчка - он обрабатывает фон, как будто его больше нет.

Вы могли бы попробовать что-то вроде этого:

Background="#01000000" 

Вы также, вероятно, хотите сохранить ссылку на Task, который (я предполагаю) возвращается вашим RecognizeAsync вызова метода; не сообщая, когда это может быть непреднамеренно собрано в мусор.

+0

Я заставляю окно исчезать, но проблема заключается в другом коде, за исключением того, что анимация перестает работать. Я редактировал свой вопрос с кодом. – user3731896