Так что я пытаюсь сделать хороший округленный переключатель, который при нажатии будет скользить либо влево, либо вправо, чтобы в принципе что-то включить или выключить (его можно использовать для других вещей). У меня есть версия прямоугольника, работающая несколько нормально (у меня есть несколько настроек в виду, что я хочу сделать для нее), но проблема, с которой я сталкиваюсь, - это использовать закругленные прямоугольники. Я сделал несколько занятий, чтобы помочь себе в этом. У меня один называется RoundRectanglePath. Используя метод Create, я даю ему Rectangle (или x, y, w, h) и радиус для углов, и он возвращает закрытый GraphicsPath, который затем я могу использовать Graphics. [Fill | Draw] Path with. Затем у меня есть класс RoundRectangle, который является просто элементом управления, который очень похож на ярлык. Я обнаружил, что если я переопределяю OnPaintBackground и не отправляю событие на базу, но вместо этого рисую прямоугольник того же цвета, что и Parent.BackColor, чем я получаю иллюзию, что элемент управления действительно круглый. (как связанная сторона, которую я допускаю прозрачно)Пользовательский контроль Windows Forms не окрашивается правильно
Для моего класса RoundMovableSwitch я использую 2 RoundRectanglePaths для разделения элемента управления пополам. Левый - зеленый цвет, а правый - розовый (думая об этом сейчас, я мог бы просто использовать горизонтальную кисть LinearGradient ... ooops oh well) Затем я рисую строку On и Off на противоположных сторонах. Для этого элемента управления я добавляю RoundRectangle. Когда пользователь нажимает на RoundRectangle или MoveableSwitch, Control затем перемещает RoundRectangle влево или вправо 1 пиксель за раз. Движение отлично работает. Проблема, с которой я столкнулась, заключается в следующем. Внешний край RoundRectangle - это правильный прозрачный цвет. Внутренний край - неправильный цвет. См. RoundMovingSwitch 1 и 2 на рисунке ниже. Как только я получу код правильно, я вернусь и реорганизую код немного больше.
Код размещен на GitHub:. Here
Картину вы показать то, что я пытаюсь добиться. Проблема не в том, что размер RoundRectangle изменяется ... но я попробую что-нибудь :) –
YOU DID IT !!!! СПАСИБО СПАСИБО СПАСИБО –