Exemple #1
0
        private void OnDraw()
        {
            int shift = 0; // 谱号偏移,如果是高音谱号偏移整个五线谱长度

            switch (_head.GetSign())
            {
            case "G":     // 高音符号G
                shift = _paramsGetter.GetTotalHeight();
                DrawSymbol("\uE19E", _paramsGetter.GetClefPortraitShift(), _paramsGetter.GetStaffCenterPosition() + shift);
                break;

            case "F":     // 低音符号F
                shift = 0;
                DrawSymbol("\uE19C", _paramsGetter.GetClefPortraitShift(), _paramsGetter.GetStaffCenterPosition() + shift);
                break;

            default: break;
            }

            float first  = _paramsGetter.GetFirstFifthsPosition();
            float second = _paramsGetter.GetSecondFifthsPosition();

            switch (_head.GetFifths())
            {
            case "2":
            {
                DrawSymbol("\uE10E", first, _paramsGetter.GetStaffPosition() + shift);     // #
                DrawSymbol("\uE10E", second, _paramsGetter.GetStaffCenterPosition() + shift);
            }
            break;

            case "1": DrawSymbol("\uE10E", first, _paramsGetter.GetStaffPosition() + shift); break;

            case "-1": DrawSymbol("\uE114", first, _paramsGetter.GetStaffCenterPosition() + shift); break;     // B

            default: break;
            }
        }