コード例 #1
0
        private void CreateFretBoard()
        {
            InstrumentType type            = InstrumentType.Guitar;
            int            numberOfStrings = 6;
            TuningType     tuning          = TuningType.Standard;

            // Die Schleife geht durch die MenuItems der Instrumente durch und ignoriert den Seperator

            for (int i = 0; i < mInstrumentType.Items.Count; i++)
            {
                try
                {
                    MenuItem item = (MenuItem)mInstrumentType.Items[i];
                    if (item.IsChecked == true)
                    {
                        type            = _dicInstruments[item.Header.ToString()].InstrumentType;
                        numberOfStrings = _dicInstruments[item.Header.ToString()].NumberOfStrings;
                        break;
                    }
                }
                catch
                {
                    // ignored
                }
            }

            for (int i = 0; i < mTune.Items.Count; i++)
            {
                try
                {
                    MenuItem item = (MenuItem)mTune.Items[i];
                    if (item.IsChecked == true)
                    {
                        tuning = Tuning.GetDicTuningsValue(item.Header.ToString());
                    }
                }
                catch
                {
                    // ignored
                }
            }

            Instrument firstInstrument = new Instrument(type, numberOfStrings, tuning);
            Scale      scale           = new Scale(CBBaseNote.SelectedItem.ToString(), _dicToneMode[CBToneMode.SelectedItem.ToString()]);

            for (int i = 0; i < _labelList.Count; i++)
            {
                GridApplication.Children.Remove(_labelList[i]);
            }

            int numberofstrings = firstInstrument.NumberOfStrings;
            int wantedRows      = numberofstrings + 1;
            int numberoffrets   = 15;
            int wantedColumns   = numberoffrets + 1;

            int[] fretMarkers = { 3, 5, 7, 9, 12, 15, 17 };

            double heightOfFretBoard  = 170;                                 //200; // Versuchen die Höhe durch eine Funktion zu bekommen
            double heightOfSingleFret = heightOfFretBoard / numberOfStrings; //wantedRows;
            double widhtOfFretBoard   = 507;                                 // Versuchen die Breite durch eine Funktion zu bekommen
            double widthOfSingleFret  = widhtOfFretBoard / wantedColumns;

            for (int i = 0; i < wantedRows; i++)
            {
                for (int j = 0; j < wantedColumns; j++)
                {
                    Label b = new Label {
                        BorderBrush = Brushes.Black
                    };

                    if (i < wantedColumns - 1)
                    {
                        try
                        {
                            if (scale.wantedScale.Contains(firstInstrument.StringsOfInstrument[i].GetNoteFromString(j)))
                            {
                                b.Content    = firstInstrument.StringsOfInstrument[i].GetNoteFromString(j);
                                b.Background = Brushes.DarkGray;
                            }
                            else
                            {
                                b.Content    = "";
                                b.Background = Brushes.Transparent;  //(SolidColorBrush)new BrushConverter().ConvertFromString("#0306FF");
                            }

                            b.BorderThickness = j == 0 ? new Thickness(0, 0, 3, 1) : new Thickness(0, 0, 1, 1);
                        }
                        catch
                        {
                            // ignored
                        }
                    }


                    b.Height = heightOfSingleFret;
                    b.Width  = widthOfSingleFret;
                    b.HorizontalContentAlignment = HorizontalAlignment.Center;

                    if (i == numberofstrings)
                    {
                        b.Content         = "";
                        b.Background      = System.Windows.Media.Brushes.Transparent;
                        b.BorderThickness = new Thickness(0, 0, 0, 1);
                        b.Height          = 30;
                    }

                    if (i == numberofstrings && fretMarkers.Contains(j))
                    {
                        b.Content = j;
                    }


                    b.VerticalAlignment   = VerticalAlignment.Bottom;
                    b.HorizontalAlignment = HorizontalAlignment.Left;

                    b.HorizontalContentAlignment = HorizontalAlignment.Right;

                    Thickness margin = b.Margin;
                    margin.Left   = widthOfSingleFret * j;
                    margin.Bottom = heightOfSingleFret * i;
                    b.Margin      = margin;

                    Grid.SetRow(b, 1);
                    GridApplication.Children.Add(b);

                    _labelList.Add(b);
                }
            }
        }
コード例 #2
0
 private void InitializeTuningMenu()
 {
     mTStandard.Header = Tuning.GetDicTuningsKey(0);
     mTDropD.Header    = Tuning.GetDicTuningsKey(1);
 }