2016-10-10 7 views
2

У меня есть проблема с свойством формы SizeGripStyle в разных DPI. Мои формы имеют свойство AutoScaleMode, установленное в Font, и позволяют масштабирование с использованием API (из-за приложения ClickOnce). Ручка как-то идет ниже формы. В Интернете я не нашел упоминания. Любая идея, как это исправить, если это возможно?РазмерGripStyle в приложении, поддерживающем DPI

There you have pics of grip's behavior on different DPI

Программа находится в C# 4.0 и WF.

ответ

1

Это ошибка в самой Windows. Winforms asks the visual style renderer, чтобы нарисовать захват. Он плохо переносит работу, вместо того, чтобы делать ее больше, она делает ее меньшей. На самом деле это не должно быть сделано, вы указываете прямоугольник, который он должен заполнить захватом. К сожалению, к сожалению, для рендеринга визуального стиля это не ошибка.

Очень мало вы можете сделать с этим, надеюсь, они исправит ошибку однажды. Но одна вещь, вы должны будете сделать захват себя. Установить свойство SizeGripStyle вида обратно в авто и переопределить OnPaint(), чтобы нарисовать его:

protected override void OnPaint(PaintEventArgs e) { 
    base.OnPaint(e); 
    var gripSize = (int)(16 * e.Graphics.DpiX/96f); 
    var rc = new Rectangle(this.ClientSize.Width - gripSize, 
          this.ClientSize.Height - gripSize, gripSize, gripSize); 
    ControlPaint.DrawSizeGrip(e.Graphics, this.BackColor, rc); 
} 

Не совсем так хорош, как «ямочка» стиль, который вы получите от визуальных стилей визуализации, вы также могли бы рассмотреть вопрос о разработке растрового изображения, но вам понадобится несколько версий, чтобы соответствовать DPI.

 Смежные вопросы

  • Нет связанных вопросов^_^