如何使用自定义窗口替换WPF标准窗口?

时间:2014-06-11 21:57:37

标签: c# wpf xaml blend

现在我正在尝试使用c#创建语音识别助手(基本上是JARVIS程序)。我开始在visual studio中编写代码,一旦代码工作,我就转移到表达混合以在UI上工作。

我已成功导入图像并在循环中对其进行动画处理。那时,当我运行程序时,一切正常(包括动画和语音识别)。我的下一步是尝试"替换"通过将标准窗口设置为透明,我刚刚导入的图像的标准窗口。使用窗格,然后我将所有画笔设置为"没有画笔,"我将allowstransparency设置为" true。"当我运行程序时,动画仍然有效,但程序停止运行所有语音识别代码。

通过消除过程,我将问题分离到背景画笔和allowstransparency函数。如果我将allowstransparency设置为true或者以任何方式弄乱背景画笔,那么就不再有语音识别。

我是编码的新手,所以我能想到的唯一原因(我甚至不知道这是否是原因)是语音识别目录和功能被映射到窗口。

有没有理由说明为什么会这样?是否有解决方法?


编辑:已添加代码

    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":

......等等

1 个答案:

答案 0 :(得分:0)

您需要完成四个步骤才能使您的窗口消失&#34;

  1. Window.WindowStyle设置为&#34;无。&#34;
  2. Window.Background设置为&#34;透明&#34;
  3. Window.BorderThickness设置等于&#34; 0&#34;
  4. Window.AllowsTransparency设置等于&#34; True&#34;
  5. 我认为您的语音识别没有理由与Window外观相关联,但您需要发布一些代码;初始化代码,以及一些示例用法可能在诊断问题的其余部分时非常有用。

    如果您需要用户点击用户界面的各个部分,您可能需要将背景设置为几乎透明的&#34;颜色,而不是纯透明的刷子。原因是;当背景纯粹是&#34;透明,&#34;它不再检测点击事件 - 它将背景视为不再存在。

    您可以尝试这样的事情:

    Background="#01000000"
    

    您可能还希望保留对Task方法调用返回的RecognizeAsync的引用; {I}}不知道什么时候可能会无意中被垃圾收集。