절대좌표계

우리가 일반적으로 특정 점을 기준으로 몇콤마 몇 하면서 맞춰서 사용하는 좌표계가 바로 절대좌표계입니다. 어려운 거 없죠. 절대점인 원점을 기준으로 보고 좌표를 계산하는 방식.

기존의 윈도우 프로그래밍, QT, GTK, 등등에서 많이 쓰고 있고, 아직도 많이 지원되는 방식이기도 합니다.

좌표계의 기본점에 대해서는 그전글에서 대충 어디에 잡힌다는 것을 적어봤습니다. 그러면 그 좌표에 맞춰서 시작 좌표가 어디인지 설정하고, 객체의 사이즈(높이, 너비)를 설정하여 기본적으로 오브젝트를 설정해 주면 그 위치애 만들어서 그려주는 건 알아서 척척 해주죠. ㅇㅂㅇ;

절대좌표계를 쓰다보면 화면의 최대화 등에 의해 화면 조정시 어떻게 처리해야 할지 곤란해 하는 경우가 있습니다. 주로 초보일 시절이죠. ㅇㅅㅇ 그럴 때에는 화면 비율을 계산하는 간단한 사칙연산을 만들어서 그 변수를 가지고 각각의 좌표에 맞춰서 적용하는 것입니다. 예를 들어, 특정 버튼에 대해서 왼쪽은 항상 200px, 오른쪽은 항상 200px를 남겨두고 만들어야 한다면 너비값을 form.width – leftspace – rightspace 와 같은 변수값을 연산하여 입력하게 한다면 항상 원하는 너비를 맞춰서 만들 수 있겠죠.

확실히 화면이 복잡해지면 그에 따른 연산식도 복잡해지고, 각 오브젝트를 생성하거나 제거하는 코드도 확실히 길어집니다. 게다가 더러워지죠. 그렇지만 이런 코드가 더럽다고 해서 불평하진 마세요. 나중에 실력이 좀 늘다보면 어느정도 정리해서 만들어 쓸 수 있기도 하고, 특정 객체들은 계속 쓰인다면 별도로 만들어 쓸 수 있는 클래스로 만들어서 쓰면 됩니다.

*주의: 클래스로 만들어 쓸 때, 상속 개념 제대로 이해 못하고 그냥 상속에 상속으로 물려서 특정 작업하는 화면 오브젝트 클래스를 만들어 쓰게 되면 나중에 그 상속들을 다 깨부숴야 할 정도의 문제가 생깁니다. 여기선 유사하지만 다른 화면 기능대로 돌아야 하는데 상속에 상속을 막 물려서 수정하면 다른 곳까지 죄다 수정되고 하는 그런 상황이 생깁니다. (요구사항 제대로 안보고 디자인 패턴대로 만들기에만 신경쓰면 이꼴납니다.)

연산식이 복잡해 지고 많아지게 되면 상당히 느려질 것으로 보이는데, 그럴 때 사용하는 것이 바로 로딩 화면을 먼저 띄워 애니메이션으로 하고 그 다음 과정에서 화면을 불러오는 작업을 진행하는 것입니다. 그런데 그만큼 느려지려면 대부분은 리소스 IO에서 생기는 부분인지라… 일반적인 응용 프로그램에서는 그럴 일 별로 없으니 열심히 써주세요. 어차피 사칙연산이고, 연산 작업들이라고 해봐야 화면에 배치하기 위한 정수 좌표 구하는 것이기 때문에 그렇게 엄청난 연산들을 하진 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.