디스플레이 가득 늘리는 창
(전회는 PIN 코드의 수동 입력이 필요없는 인증 정보 , 다음회는 작업 스케줄러로 앱 시작 자동화 )
화면 해상도 얻기
세로로 늘리는 것보다 세로 창의 크기를 결정하려면 화면 해상도 정보가 필요합니다. 아무래도 WPF의 클래스에 그 정보를 취득할 수 있는 메소드가 없는 것 같고, Window.Forms의 메소드를 이용하는 것 같습니다.
(참고: C#에서 화면 해상도 얻기 )
//自身のウィンドウを囲む長方形を定義,thisはGUIアプリのクラス
System.Drawing.Rectangle rect = new System.Drawing.Rectangle((int)this.Left, (int)this.Top, (int)this.Width, (int)this.Height);
//長方形のある(ウィンドウのある)ディスプレイのスクリーン情報を取得
System.Windows.Forms.Screen screenData = System.Windows.Forms.Screen.FromRectangle(rect);
//縦と横の解像度を取得
int screenHeight = screenData.WorkingArea.Height;
int screenWidth = screenData.WorkingArea.Width;
마지막 2행에 WorkingArea
라고 있습니다만, 이 경우는 태스크 바등을 제외한 작업 영역의 사이즈를 꺼낼 수가 있어, Bounds
로 하면 화면 전체의 사이즈를 낼 수 있는 것 같습니다(참고: 디스플레이 크기(화면 영역, 해상도) 얻기 ) .
DPI를 통한 조정
위에서 얻은 데이터를 윈도우 크기에 적용해도 화면의 DPI 설정(1인치에 몇 도트 넣는지)에 따라서는 아래로 튀어나올 가능성이 있습니다. 아래 그림의 설정이 100%가 아니면 위의 정보만으로는 작동하지 않습니다. 자신도 평상시는 150%로 하고 있었던 것으로 밝혀졌습니다.
이를 해결하기 위해 스케일 인수를 통해 DPI 계수를 얻어야합니다. 예를 들어 위와 같이 150% 설정의 경우는 1.5배의 크기로 표시되어 버리므로 크기를 1.5로 나누면 좋은 것 같습니다.
(참고: WPF에서 높은 DPI 지원 )
PresentationSource source = PresentationSource.FromVisual(this);
double scaleX = 1.0;
double scaleY = 1.0;
if (source != null)
{
//ここでDPIの係数を取得
scaleX = source.CompositionTarget.TransformToDevice.M11;
scaleY = source.CompositionTarget.TransformToDevice.M22;
}
//サイズを画面の縦サイズと同じにする
this.Height = (double)screenHeight / scaleY;
요약
이번, 윈도우의 사이즈를 두려워해, DPI의 일도 생각하지 않으면 안 되는 등, 귀찮은 부분도 하지 않으면 안된다고 하는 것을 알았습니다.
Reference
이 문제에 관하여(디스플레이 가득 늘리는 창), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/HexagramNM/items/8d7633c8c2f340402ba2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//自身のウィンドウを囲む長方形を定義,thisはGUIアプリのクラス
System.Drawing.Rectangle rect = new System.Drawing.Rectangle((int)this.Left, (int)this.Top, (int)this.Width, (int)this.Height);
//長方形のある(ウィンドウのある)ディスプレイのスクリーン情報を取得
System.Windows.Forms.Screen screenData = System.Windows.Forms.Screen.FromRectangle(rect);
//縦と横の解像度を取得
int screenHeight = screenData.WorkingArea.Height;
int screenWidth = screenData.WorkingArea.Width;
위에서 얻은 데이터를 윈도우 크기에 적용해도 화면의 DPI 설정(1인치에 몇 도트 넣는지)에 따라서는 아래로 튀어나올 가능성이 있습니다. 아래 그림의 설정이 100%가 아니면 위의 정보만으로는 작동하지 않습니다. 자신도 평상시는 150%로 하고 있었던 것으로 밝혀졌습니다.
이를 해결하기 위해 스케일 인수를 통해 DPI 계수를 얻어야합니다. 예를 들어 위와 같이 150% 설정의 경우는 1.5배의 크기로 표시되어 버리므로 크기를 1.5로 나누면 좋은 것 같습니다.
(참고: WPF에서 높은 DPI 지원 )
PresentationSource source = PresentationSource.FromVisual(this);
double scaleX = 1.0;
double scaleY = 1.0;
if (source != null)
{
//ここでDPIの係数を取得
scaleX = source.CompositionTarget.TransformToDevice.M11;
scaleY = source.CompositionTarget.TransformToDevice.M22;
}
//サイズを画面の縦サイズと同じにする
this.Height = (double)screenHeight / scaleY;
요약
이번, 윈도우의 사이즈를 두려워해, DPI의 일도 생각하지 않으면 안 되는 등, 귀찮은 부분도 하지 않으면 안된다고 하는 것을 알았습니다.
Reference
이 문제에 관하여(디스플레이 가득 늘리는 창), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/HexagramNM/items/8d7633c8c2f340402ba2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(디스플레이 가득 늘리는 창), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/HexagramNM/items/8d7633c8c2f340402ba2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)