none
關於WPF 電子琴的問題 RRS feed

  • 一般討論

  • 我已經透過Rectangle的物件

    與Webcam合在一起

    並觸碰Rectangle可以發出聲音

    而我的另一個視窗有簡譜

    假設兩隻老虎

    要去判斷我所觸碰的音與簡譜上的字是否一樣

    請問我該怎麼寫

    我現在的程式碼片段為:

       void timer2_Tick(object sender, EventArgs e)//(timer2_Tick)事件,拿來當作觸碰感測器
            {
               
                byte[] pix2 = new byte[4];//設置容納四個元素的byte陣列變數"pix",要用來存取intoRGB方法轉換後的RGB色碼值
                for (int Tag = 1; Tag <= 11; Tag++)//Tag顏色尋找當成陣列處理
                {
                    pix2 = intoRGB(Tag);//執行intoRGB方法並輸入字串"r1",輸入之後回覆結果將存放於"pix"陣列變數裡
                    string TagNumber = "r" + Tag;
                    object item = LayoutRoot.FindName(TagNumber);
                    Rectangle rNumber = (Rectangle)item;
                    if (pix2[1] > mainRGB[1] - ColorRange && pix2[1] < mainRGB[1] + ColorRange && //驗證G數值是否在範圍內
                        pix2[2] > mainRGB[2] - ColorRange && pix2[2] < mainRGB[2] + ColorRange && //驗證R數值是否在範圍內
                        pix2[0] > mainRGB[0] - ColorRange && pix2[0] < mainRGB[0] + ColorRange //驗證B數值是否在範圍內
                        )
                    {
                        for (int num = 1; num <= 32; num++)
                        {
                            Window6 tiger = new Window6();
                            int TagCount = Int32.Parse(txtCount.Text);
                            string LabelNumber = "label" + num;
                            object item2 = tiger.layoutRoot.FindName(LabelNumber);
                            Label lNumber1 = (Label)item2;
                            string lNumber = lNumber1.Name ;
                            int TrueCount = Int32.Parse(textBox2.Text);
                            int FlaseCount = Int32.Parse(textBox3.Text);
                            // Tag++;//表示上述顏色驗證條件通過後,Tag加1
                           if (rNumber == r1)
                             {
                               Console.Beep(262, 500);
                                   
                                   TagCount--;
                             }
                           
                                if (rNumber == r2)
                                {
                                    Console.Beep(294, 500);
                                  
                                }
                            
                           
                                if (rNumber == r3)
                                {
                                    Console.Beep(330, 500);
                                }
                            
                         
                                if (rNumber == r4)
                                {
                                    Console.Beep(349, 500);
                                }
                            
                          
                          
                            
                                if (rNumber == r5)
                                {
                                    Console.Beep(392, 500);
                                }
                            
                           
                          
                                if (rNumber == r6)
                                {
                                    Console.Beep(440, 500);
                                }
                            
                           
                           
                            if (rNumber == r7)
                             {
                                    Console.Beep(493, 500);
                             }
                            
                           
                            if (rNumber == r8)
                            {
                                Console.Beep(523, 500);
                            }
                          
                            if (rNumber == r9)
                            {
                                Console.Beep(240, 500);
                                // Console.Beep(493, 500);
                            }
                            if (rNumber == r10)
                            {
                                //Console.Beep(440, 500);
                                Console.Beep(220, 500);
                            }
                            if (rNumber == r11)
                            {
                                //Console.Beep(392, 500);
                                Console.Beep(186, 500);
                            }
                            txtCount.Text = Convert.ToString(TagCount);//顯示下個目標進度	
                            textBox2.Text = Convert.ToString(TrueCount);
                            textBox3.Text = Convert.ToString(FlaseCount);
                            //ChangeColor(Tag);
                        }
                    }
                }
                if (txtCount .Text  == "0")//當所有目標都碰觸完後的動作
                {
                    timer1.Stop();
                    timer2.Stop();//停止計時器
                    MessageBox.Show("訓練完成時間: " + d + "天" + "小時" + m + "分" + s + "秒");//顯示使用的訓練時間
                    btn_Start.Content = "重新訓練";//將開始扭狀態標示為重新訓練
                    r0.Visibility = Visibility;//讓紅色擷取框恢復顯示
                    s = m = h = d = 0;//將時間歸零
                    Global_webcam.Stop();//停止攝影機設備		
                }
            }

    2013年10月5日 上午 08:19