Флажок, настроенный для кнопки переключения в winforms, не отображается должным образом при использовании разных мониторов с разным разрешением - PullRequest
0 голосов
/ 06 мая 2020

Я настроил этот флажок, чтобы он отображался как кнопка переключения, которая не отображается должным образом, если я использую два монитора с разными разрешениями, в противном случае отображается правильно. Как я могу заблокировать его, чтобы он отображался так же на любом мониторе

enter image description here

enter image description here

Это так выглядит настраиваемый флажок,

      protected override void OnPaint(PaintEventArgs e)
    {
        this.OnPaintBackground(e);
        e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
        using (var path = new GraphicsPath())
        {
            var d = Padding.All;
            var r = this.Height - 2 * d;
            path.AddArc(d, d, r, r, 90, 180);
            path.AddArc(this.Width - r - d, d, r, r, -90, 180);
            path.CloseFigure();
            e.Graphics.FillPath(Checked ? Brushes.DarkGray : Brushes.LightGray, path);
            r = Height - 1;
            var rect = Checked ? new Rectangle(Width - r - 1, 0, r, r)
                               : new Rectangle(0, 0, r, r);
            SolidBrush brush = new SolidBrush(Color.FromArgb(0, 122, 204));

            e.Graphics.FillEllipse(Checked ? brush : (TeamsForm.CurrentBackGroundTheme.Name == DarkBackGround) ? Brushes.WhiteSmoke : Brushes.LightGray, rect);
        }

1 Ответ

1 голос
/ 06 мая 2020

Вам нужно будет обработать событие Form.DpiChanged и изменить масштаб вашего элемента управления.

Однако в. NET Framework PMA является рудиментарным, на сегодняшний день он мало что видел улучшение. NET Core либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...