처음부터 그래픽 라이브러리 만들기 - 페이지 15

 
다른 모든 것은 훌륭합니다. 계속하십시오.
 
캔버스에서 컨트롤을 만드는 것은 매우 간단합니다.

1. 캔버스 클래스에서 몇 가지 그리기 기능, 즉 세로선 , 가로선을 가져옵니다. 사각형, 채워진 사각형, 텍스트.

2. 각 요소를 그리는 함수를 작성하십시오: void Button(), void Checkbox()... 등.

3. 그리기 요소용 함수에서 원하는 캔버스에 원하는 컨트롤의 구조를 "그리는" 그리기 함수(선, 사각형)에 대한 호출 세트를 포함합니다.

4. 생성된 각 요소의 인스턴스는 자체 창에 첨부되어야 합니다.

5. 생성된 각 인스턴스의 속성(현재 X, Y, X_SIZE, Y_SIZE...)은 다른 함수에서 읽거나 변경할 수 있도록 배열 또는 구조에 저장되어야 합니다.

자, 그럼 꼬불꼬불한 길을 따라 가보세요....)

그리고 모든 것이 캔버스에 있습니다.

 
그러나 기본 배경에 그려진 개체 아래에 있을 수 있는 다른 개체가 필요한 경우에는 어떻게 합니까?
 
Aliaksandr Hryshyn :
그러나 기본 배경에 그려진 개체 아래에 있을 수 있는 다른 개체가 필요한 경우에는 어떻게 합니까?
예를 들어. 솔루션이 다른 여러 상황이 있습니다.
 
Реter Konow :
예를 들어 주십시오. 다양한 솔루션이 있는 다양한 상황이 있습니다.

제 상황에서는 아마 캔버스면 충분할 것 같은데 조언해주신대로 해볼 생각입니다.

또한, 이미 캔버스에 대한 최소한의 지원이 있습니다.
 
각 창은 별도의 독립 캔버스입니다.

창을 만드는 것은 다른 요소보다 간단하지 않습니다.

1. 창에는 (CCanvas 클래스에서) FilledRectangle() 함수를 호출하고 템플릿 또는 사용자 정의 값을 전달하여 생성된 캔버스에 순차적으로 그려지는 여러 일반 사각형의 간단한 기본 속성이 있습니다.

2. 창은 요소보다 먼저 그려집니다. 특수 창 그리기 함수인 Draw_window(x, y, w, h)가 이를 담당합니다. 예를 들어, 창 구성을 빌드하는 데 필요한 횟수만큼 FilledRectangle()을 호출합니다.

3. 그러면 컨트롤을 그리는 함수가 호출됩니다. 각각은 순차적으로 그려진 직사각형 과 프레임에서 창처럼 만들어집니다.

4. 함수를 호출하여 생성된 각 요소의 각 인스턴스 속성은 다음을 포함하여 다른 함수에서 사용할 수 있는 메모리 변형에 기록됩니다.

그려진 요소의 좌표 위에 커서가 있는 이벤트를 포착하는 함수로, 각 커서 이동 이벤트에서 이 창에서 그려지고 표시된 모든 요소의 좌표를 반복하고 바로 아래에 있는 요소를 찾습니다.

커서 아래에 있는 요소의 클릭/해제 이벤트를 캡처하고 해당 요소(색상, 아이콘 ...)의 매개변수 값을 변경하는 다른 함수를 호출하여 상태(대화형인 경우)를 전환하고 다시 그립니다.

우선, 그것으로 충분합니다.

 
Roman :

HFT의 경우 3D가 주문장 볼륨과 주문 흐름에 대한 그래픽 분석을 생성할 때 유용할 것이라고 생각합니다.
그러나 그러한 정보를 해석하는 방법은 침투하지 않았습니다.

여기가 어디야?

 
컨트롤에는 몇 가지 범주가 있으며 그 중 두 가지 주요 범주를 구분할 수 있습니다.

1. 장식 - 선, 프레임, 직사각형, 아이콘...

2. "파라메트릭" - 즉. 매개변수가 있습니다.

두 번째 유형은 두 가지 하위 범주로 표시됩니다.

1. 입력 요소 - 다양한 유형의 매개변수용으로 설계된 그래픽 "메커니즘"의 값을 변경할 수 있는 기능을 제공합니다. 이러한 요소는 여러 그룹으로 나뉩니다. 예를 들어 논리적 상태 true/false(bool)는 버튼, 체크박스 및 라디오 버튼으로 설정되고 범위 경계 및 단계가 있는 매개변수 값은 슬라이더로 제어됩니다. 또는 입력 필드 . 각 매개변수 유형에는 유사한 방식으로 값을 변경할 수 있는 동일한 유형의 여러 요소가 있습니다.

2. 출력 요소 - 숫자, 텍스트 또는 기타 그래픽 변환 형식으로 값을 브로드캐스트합니다. 그 중에는 테이블 셀, 텍스트 레이블, 진행률 표시줄이 있습니다. 지표와 그래프도 이 범주에 속하며 이들의 유일한 차이점은 대량의 출력 데이터에 대한 적응성입니다.


앞서 말했듯이 요소를 그리는 것은 간단하고 직관적입니다. 사실 이것은 값이 있는 배열의 마크업일 뿐입니다. CCanvas 클래스에서 모든 기능(선, 직사각형, 프레임)을 사용할 수 있습니다. 함수는 배열을 전달하기만 하면 됩니다. 배열은 리소스에 저장되고 OBJPROP_BMPFILE 속성을 사용하여 BITMAP_LABEL 개체에 연결됩니다.

이 클래스의 래퍼는 개의 다섯 번째 다리처럼 방해가 됩니다. (아마도 이것이 지금까지 아무도 캔버스에 라이브러리를 만들지 않은 이유일 것입니다. 왜냐하면 위에서부터 "안장으로만 소를 타라!"라고 말했기 때문입니다. ;)).