private void UpdatePosition(VirtualPianoKeyControl keyControl) { float heightPercent = noteAreaControl.HeightForSingleNote * 0.8f; float yPercent = (float)noteAreaControl.GetVerticalPositionForMidiNote(keyControl.MidiNote) - heightPercent / 2; float widthPercent = MidiUtils.IsWhitePianoKey(keyControl.MidiNote) ? 0.9f : 0.7f; VisualElement visualElement = keyControl.VisualElement; visualElement.style.position = new StyleEnum <Position>(Position.Absolute); visualElement.style.top = new StyleLength(new Length(yPercent * 100, LengthUnit.Percent)); visualElement.style.height = new StyleLength(new Length(heightPercent * 100, LengthUnit.Percent)); visualElement.style.left = 0; visualElement.style.width = new StyleLength(new Length(widthPercent * 100, LengthUnit.Percent)); }
private VirtualPianoKeyControl CreatePianoKeyForMidiNote(int midiNote) { VisualElement visualElement = new(); visualElement.AddToClassList("virtualPianoKey"); VirtualPianoKeyControl keyControl = injector .WithRootVisualElement(visualElement) .CreateAndInject <VirtualPianoKeyControl>(); keyControl.MidiNote = midiNote; virtualPiano.Add(visualElement); return(keyControl); }