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

 
Aliaksandr Hryshyn :

제 경우에는 "정글"이 평균보다 더 복잡하지 않게 만들어졌습니다. 표시 창(표의 가시 영역), 모든 셀이 맞아야 하는 전체 크기 창, 내부로 이동합니다. 기본 창, 행 및 셀 창, 스크롤링(슬라이더, 밴드 제한). 상대적 배치 구속은 속성에 의해 결정됩니다. 슬라이더의 경우에만 개체 이동 이벤트 를 가로채고 " 전체 크기 창"의 위치를 이미 조정해야 합니다. 이것은 모두 가상 창으로 수행되며 시각적 부분을 첨부해야 합니다. 시각적 부분이 없으면 선 창과 전체 크기 창이 있습니다. 글쎄, 편집된 셀에 대해 입력 필드를 만들고(이것은 이미 스스로 수행함) 나머지 모든 상호 작용은 엔진에 의해 구현됩니다. 각 셀에 대한 올바른 이벤트가 도착합니다(마우스 이벤트, 다시 그리기, 이동) .. .. 이러한 기회, 많은 창(큰 목록, 테이블, 수천 개의 창)이 있을 때 성능을 높일 수 있는 몇 가지 아이디어가 더 있습니다.

여기 당신이 할 .... 그리고 우리는 이야기 할 것입니다. :)))

이 스레드는 마크업 언어와 viz.editor를 시연한 내 crowdsource GUI 테마에서 파생되었습니다. 포럼의 일부 회원은 라이브러리에서 모든 것을 더 훌륭하고 아름답게 반복할 수 있다고 생각했습니다. 4 페이지 후에 주제가 가라 앉았습니다. Woz와 지금 거기. 그리고 여기 당신은 그들처럼 "천 개의 창"에 대해 이야기하고 있습니다 ... 간단히 말해서 마침내하십시오.)))))

행운을 빕니다.))))
 
나는 표를 약간 설명할 것이다:

1. 셀 - 테이블의 가장 간단한 요소는 직접 레이블, 텍스트, 아이콘의 세 가지 개체로 구성됩니다.

2. 셀에는 여러 유형이 있습니다. 열, 행 및 내부의 표제. 분리하는 것이 중요하기 때문에 헤더에는 행/열(기본적으로 속성)에 대한 정보가 포함됩니다. 이렇게 하면 스프레드시트 작업이 더 쉬워집니다.

3. 각 일반 셀에는 매개 변수가 있으며 값이 표시되지만 매개 변수가 없는 텍스트 셀만 있습니다. 이것은 다른 유형입니다.

3. 셀 속성은 전체 행, 열 또는 전체 테이블과 같이 선택적으로 구성해야 합니다.

4. 헤더 셀 속성은 별도로 구성해야 합니다.

5. 테이블은 확인란, 목록, ... 슬라이더, 진행률 표시줄 및 라디오 버튼과 같은 다른 요소를 자체적으로 조정할 수 있어야 합니다.

6. 테이블의 작업은 최적화되어야 합니다. 변경된 값이 있는 셀만 다시 그려지고 전부는 아닙니다.

7. 제한된 시야에 테이블을 배치하면 테이블이 스크롤되어야 합니다.

8. 테이블에는 부품 폴더가 포함될 수 있습니다.

9. 테이블 열의 너비를 변경할 수 있습니다.

10. 테이블은 행 수가 미리 결정되지 않은 경우 동적일 수 있습니다.

11. 테이블을 정렬할 수 있어야 합니다.

12. 테이블은 전체 또는 선택한 행/열에 따라 색상이 지정될 수 있어야 합니다.

신은 단순한 직사각형과 텍스트로 표를 만드는 것을 금지합니다. 왜냐하면 그러한 "세포"는 요소가 아니며 이것은 막다른 골목입니다.

이러한 것들을 구현했습니다. 모든 면에서 완벽하지는 않지만 잘 작동합니다.

테이블은 확실히 가장 어려운 요소 중 하나입니다. 많은 메커니즘과 다양한 솔루션을 포함하여 가장 복잡합니다.
 
여기 이 표가 있습니다.)) Anatoly가 캔버스에 처음으로 만든 것을 기억합니다. 그에게는 힘들었습니다. 그는 많은 것을 매우 아름답게 깨달았습니다. 부러워 할 수 있습니다.
 
Реter Konow :
이것은 그런 테이블입니다.))) Anatoly가 캔버스에 처음으로 만든 것을 기억합니다. 그에게는 힘들었습니다. 그는 많은 것을 매우 아름답게 깨달았습니다. 부러워 할 수 있습니다.

우리는 아름답게 하지 않고 기능적으로 합니다. 필요한 오브제를 천천히 만들고 있는데, 접근 방식이 다른 솔루션과 다릅니다. 모든 개체를 테이블 셀에 배치할 수 있습니다. 엔진에 캔버스 지원을 추가했는데 캔버스와 일반 직사각형이 모두 사용되는 것으로 나타났습니다. 데모 첨부

왼쪽 상단의 빈 모서리로 끌 수 있습니다.


파일:
Test_v_grid.ex5  517 kb
 
Aliaksandr Hryshyn :

우리는 아름답게 하지 않고 기능적으로 합니다. 필요한 오브제를 천천히 만들고 있는데, 접근 방식이 다른 솔루션과 다릅니다. 모든 개체를 테이블 셀에 배치할 수 있습니다. 엔진에 캔버스 지원을 추가했는데 캔버스와 일반 직사각형이 모두 사용되는 것으로 나타났습니다. 데모 첨부

왼쪽 상단의 빈 모서리로 끌 수 있습니다.


나쁘지 않아, 나쁘지 않아...

첫 번째 비판:

개념적으로는 하나의 큰 창입니까, 아니면 여러 개의 작은 창이 함께 붙어 있습니까? 불행히도 창의 움직임은 없습니다. 역학은 약간 이상하게 작동합니다. 생각할 다른 것이 있습니다. 나는 세포에 아무것도 넣을 기회를 찾지 못했습니다. 그들은 상호 작용하지 않습니다. 아직 작동하는 컨트롤 이 하나도 없으며 간단한 버튼이나 체크박스도 없습니다. 구조적으로 창은 작동하지 않습니다. 프레임이 없거나 최소화 또는 크기 조정 버튼이 없거나 지저분한 아이콘 ... 기능을 수행하지 않고 장식을 위해 배치해야합니다. 그렇지 않으면 명확하지 않기 때문에 우리는보고 있습니다. 물론... 매우 습합니다.

칭찬:

단점에도 불구하고 저는 큰 발전과 잠재력을 봅니다. 물론 인내심과 힘이 충분하다면 결국 무언가가 해결될 수 있습니다. 글쎄, 재능은 분명히 거기에 있다.)


추신 나는 스크롤링(절름발이이지만)과 제한적이긴 하지만 창틀의 "고무성"에 만족했습니다. :)))

추신 죄송합니다. 하위 창을 이동할 수 있습니다! 처음에는 이해하지 못했습니다. 물론 여행 공간은 매우 제한적이지만 여전히 ...
 
또 다른 장점: 레이블 "A"(이유는 알려져 있지 않음)는 대화형입니다! 그것은 이미 좋다.
 

불행히도 로드 후 창은 다음과 같이 위치하지 않습니다.


그것들을 중앙에 놓으려는 시도는 성공으로 이어지지 않습니다.
 
Реter Konow :

나쁘지 않아, 나쁘지 않아...

첫 번째 비판:

개념적으로는 하나의 큰 창입니까, 아니면 여러 개의 작은 창이 함께 붙어 있습니까? 불행히도 창의 움직임은 없습니다. 역학은 약간 이상하게 작동합니다. 생각할 다른 것이 있습니다. 나는 세포에 아무것도 넣을 기회를 찾지 못했습니다. 그들은 상호 작용하지 않습니다. 아직 작동하는 컨트롤이 하나도 없으며 간단한 버튼이나 체크박스도 없습니다. 구조적으로 창은 작동하지 않습니다. 프레임이 없거나 최소화 또는 확대/축소 버튼이 없거나 지저분한 아이콘 ... 기능을 수행하지 않고 장식을 위해 배치해야합니다. 그렇지 않으면 명확하지 않기 때문에 우리는보고 있습니다. 물론... 매우 습합니다.

칭찬:

단점에도 불구하고 저는 큰 발전과 잠재력을 봅니다. 물론 인내심과 힘이 충분하다면 결국 무언가가 해결될 수 있습니다. 글쎄, 재능은 분명히 거기에 있다.)


추신 나는 스크롤링(절름발이이지만)과 제한적이긴 하지만 창틀의 "고무성"에 만족했습니다. :)))

추신 죄송합니다. 하위 창을 이동할 수 있습니다! 처음에는 이해하지 못했습니다. 물론 여행 공간은 매우 제한적이지만 여전히 ...

여기에서 모든 창 (일반, 셀, 스크롤, 스크롤 슬라이더....) 은 동일한 작동 원리를 가지며 속성만 다르고 시각적 표현만 다르며 보이지 않는 창도 있으므로 유리 시각화를 배치할 수 있습니다. 모든 창에서 슬라이더나 빨간색 작은 사각형에서도 차이가 없습니다.

셀의 주문서는 표시기(주문서 자체를 눈금 차트와 헤더 뒤로 이동, 수직 가격 이동)에서와 같이 대화형이며 테이블의 오른쪽 스크롤에 의해 휠 스크롤 이벤트만 처리됩니다.

이 테이블은 다양한 목록과 테이블을 생성하기 위한 기본 시각적 요소 역할을 합니다. 셀 내부에 무엇이 배치되었는지는 중요하지 않습니다. 다른 개체 또는 동일한 테이블을 가질 수 있습니다.

 
Реter Konow :
또 다른 장점: 레이블 "A"(이유는 알려져 있지 않음)는 대화형입니다! 그것은 이미 좋다.

유리 표시기를 테스트 했습니까? 이것은 자동 가격 스크롤을 활성화/비활성화합니다.

 
Aliaksandr Hryshyn :

유리 표시기를 테스트 했습니까? 이것은 자동 가격 스크롤을 활성화/비활성화합니다.

네, 오더북 자체와 틱 인디케이터가 잘 되어 있습니다. 불만이 가장 적습니다. 직접 쓰신 건가요 아니면 어딘가에서 빌린 건가요?