2016-10-10 4 views
2

다른 DPI의 양식의 속성 SizeGripStyle에 문제가 있습니다. 내 양식은 AutoScaleMode 속성을 Font로 설정하고 API를 사용하여 크기 조정을 활성화합니다 (ClickOnce 앱 때문에). 그립은 어떻게 든 폼 아래로 간다. 인터넷에서 나는 어떤 언급도 찾지 못했습니다. 가능한 경우 문제를 해결하는 방법을 알려주세요.DPI 인식 응용 프로그램의 SizeGripStyle

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

은 프로그램 C# 4.0 WF이다.

답변

1

이것은 Windows 자체의 버그입니다. 그립을 그리기 위해 asks the visual style renderer을 Winforms하십시오. 그것은 그것을 더 작게 만드는 대신에, 그것을 나쁘게 만든다. 실제로는 그렇게하지 말아야합니다. 그립으로 채울 사각형을 지정하십시오. 불행히도 비주얼 스타일 렌더러에서 완전히 드물지 않은 버그입니다.

당신이 할 수있는 일은 거의 없기 때문에 언젠가 버그를 고칠 수 있기를 바랍니다. 하지만 한 가지 방법은 그립을 직접 그려야합니다. 자동으로 다시 폼의 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와 일치시키기 위해서는 여러 버전이 필요할 것입니다.

관련 문제