VB 좌표 문제

Width와 Height는 폼의 전체 너비와 높이이고, ScaleWidth와 ScaleHeight는 폼 내 클라이언트 영역의 너비와 높이(즉, 폼을 제거한 후 실제로 사용할 수 있는 영역)입니다. 테두리, 제목 표시줄, 메뉴 등)이 높습니다.

ScaleMode를 0으로 선택하면 클라이언트 영역이 사용자 정의 좌표계를 사용한다는 의미입니다. ScaleWidth=100으로 설정하면 양식의 클라이언트 영역 너비가 100단위라는 의미입니다. , 이 단위는 몇 트윕에 해당합니까? VB의 기본 단위는 어떻습니까? ScaleMode를 기본값 1로 다시 선택할 수 있습니다. 이때 Width=4000, ScaleWidth=3885인 경우 사용자 정의된 100 너비 단위 = 3885트윕을 의미합니다. 이제 Width=5000, ScaleWidth=4875로 설정합니다. 이는 클라이언트 영역의 너비가 4875/3885=1.254826배 증가했다는 의미입니다. 그러면 사용자 정의된 너비 단위는 자연스럽게 100*1.254826=125.4826이 됩니다! ! ! 높이의 상황은 비슷합니다. 이때 폼 제목 표시줄을 고려해야 하기 때문에 Width와 Height는 동일한 값이지만 ScaleWidth와 ScaleHeight(트윅 단위로 계산)의 값은 동일하지 않으므로 사용자 정의합니다. 100 높이 단위와 100 너비 단위도 서로 다른 두 가지 길이 단위입니다. 구체적인 계산은 다음과 같습니다:

Height=4000트윕, ScaleHeight=3495트윕,

Height=5000트윕, ScaleHeight=4485트윕,

따라서 클라이언트 영역의 높이는 4485/3495=1.283262만큼 증가했습니다.

즉, 클라이언트 영역의 사용자 정의된 높이는 100*1.283262=128.3262입니다.

제가 계산한 높이는 귀하의 128.821과 같습니다. 약간의 차이가 있습니다. 이는 귀하의 XP 시스템과 내 시스템이 서로 다른 데스크탑 테마를 사용하기 때문에 제목 표시줄의 높이가 다르지만 오류는 그리 크지 않습니다.

이제 이해가 되셨나요?

게다가 "양식의 외부 테두리가 양식의 내부 테두리보다 훨씬 크다"는 진술은 어떻게 나올 수 있습니까? 1000미터와 1킬로미터는 숫자로만 보면 1보다 훨씬 크지만, 단위가 다르다는 점을 잊지 마세요! ! !