// 绘制和弦 private void DrawChord() { bool leftOrRight = _note.IsUpOrDown(); int headPosition = Start; int lastPosition = 0; // int chordPaintNum = 0; // 绘制和弦中的其他乐符(最后一个乐符即当前乐符,已经绘制),去掉和弦表中的最后一个乐符 for (int i = 0; i < _note.GetChordList().Count - 1; i++) { Note extraNote = _note.GetChordList()[i]; DrawShiftLine(extraNote.GetShift() / ParamsGetter.GetPitchPositionDiff()); int extraDuration = extraNote.GetType(); int extraPosition = extraNote.GetShift() + ParamsGetter.GetStaffCenterPosition(); if (Math.Abs(extraPosition - lastPosition) == ParamsGetter.GetPitchPositionDiff()) { if (leftOrRight) { headPosition += ParamsGetter.GetNoteHeadWidth(); } else { headPosition -= ParamsGetter.GetNoteHeadWidth(); } leftOrRight = !leftOrRight; } if (extraDuration == 1) // 全音符 { DrawSymbol("\uE12B", headPosition, extraPosition); continue; } else { if (extraDuration == 2) { DrawSymbol("\uE12C", headPosition, extraPosition); } else { DrawSymbol("\uE12D", headPosition, extraPosition); } } lastPosition = extraPosition; int temp; if (_note.IsUpOrDown()) { temp = extraPosition + ParamsGetter.GetNoteStemHeight(); } else { temp = extraPosition - ParamsGetter.GetNoteStemHeight(); } DrawLine(_stemX, extraPosition, _stemX, temp); } }