한 번에 여러 사각형을 캔버스에 그리는 방법은 무엇입니까?

존 와이즈

저는 drawRect를 사용하여 HTML5 캔버스에 많은 수 (~ 20000)의 직사각형을 각각 미리 정해진 위치에서 그립니다. 나는 이것을 루프에서하고있다.

for (var i = 0; i < 100; ++i) {
    for (var j = 0; j < 200; ++j) {
        context.fillStyle = '#000000';
        context.fillRect(i * 8, j * 2, 6, 1);
    }
}

JSFiddle 작업 데모

이 스 니펫은 각각 6px 너비의 800px 캔버스에 100 개의 막대를 그립니다. 각 막대는 서로 아래에 쌓인 수많은 작은 (1x6) 직사각형으로 구성됩니다. 제공된 예제에서는 정적 개수가 200 개이지만 동적으로 변경됩니다. 내 응용 프로그램에서 계산합니다 (따라서 다시 렌더링해야 함).

이 작업은 수십 밀리 초가 걸리며 그 자체로는 심각한 문제가 아닙니다. 그러나이 전체 프로세스는 반복적으로 호출되어 성능에 영향을 미치며 좋지는 않습니다.

이러한 막대를 하나의 캔버스 명령에 그려서 하드웨어 가속을 훨씬 더 잘 활용할 수있는 솔루션이나 해결 방법이 있습니까?

사각형은 각각 내 앱에서 빛을 발하므로 가로로 자르는 것은 좋은 방법이 아닙니다. 이미 오프 스크린 캔버스를 사용하여 그림을 그리고 메인 캔버스에 이미지 출력을 렌더링하려고 시도했지만 눈에 띄는 성능 향상은 없습니다.

Alnitak

하나의 전체 높이 막대를 포함하는 단일 (오프 스크린) 캔버스 이미지를 만든 다음 각 동적 높이 막대에 대해 필요한 수의 수직 픽셀 만 화면 캔버스에 복사합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

클래스를 사용하여 tkinter 캔버스에 다각형을 그리는 방법은 무엇입니까?

분류에서Dev

캔버스-한 번에 여러 이미지에 애니메이션을 적용하는 방법은 무엇입니까?

분류에서Dev

Android 캔버스에 부분 원형 사각형을 그리는 방법은 무엇입니까?

분류에서Dev

이미지에서 마우스로 여러 직사각형을 그리는 방법은 무엇입니까?

분류에서Dev

drawImage ()를 사용하여 캔버스에 그림을 그리는 방법은 무엇입니까?

분류에서Dev

wpf에서 사각형의 높이를 수정 한 후 캔버스에서 사각형을 재정렬하는 방법은 무엇입니까?

분류에서Dev

한 번에 여러 CSV 행을 작성하는 방법은 무엇입니까?

분류에서Dev

한 번에 여러 열을 연결하는 방법은 무엇입니까?

분류에서Dev

한 번에 여러 행을 만드는 방법은 무엇입니까?

분류에서Dev

전단지 addGeoJSON () 함수를 사용하여 한 번에 여러 다각형을 표시하는 방법은 무엇입니까?

분류에서Dev

SharedPreference를 사용하여 캔버스에 문자열을 그리는 방법은 무엇입니까?

분류에서Dev

한 번에 여러 열의 여러 행을 그룹화하고 결합하는 방법은 무엇입니까?

분류에서Dev

OpenGL을 사용하여 중앙의 버튼에 사각형을 그리는 방법은 무엇입니까?

분류에서Dev

itext pdf를 사용하여 PDF 캔버스에 경로를 그리는 방법은 무엇입니까?

분류에서Dev

VBA를 사용하여 한 번에 여러 그래프에서 XY 축과 형식의 동일한 제목을 변경하는 방법은 무엇입니까?

분류에서Dev

캔버스에서 사각형의 음수 그리기를 중지하는 방법은 무엇입니까?

분류에서Dev

드래그 가능한 캔버스 위젯을 여러 개 사용하는 방법은 무엇입니까?

분류에서Dev

한 그림에서 여러 개의 numpy 배열을 그리는 방법은 무엇입니까?

분류에서Dev

nano에서 한 번에 여러 줄을 주석 처리하는 방법은 무엇입니까?

분류에서Dev

메모장 ++에서 한 번에 여러 줄을 주석 처리하는 방법은 무엇입니까?

분류에서Dev

C #을 사용하여 WPF의 캔버스에 수직으로 직사각형을 하나씩 추가하는 방법은 무엇입니까?

분류에서Dev

한 번에 여러 SAS 프로그램을 끄는 방법은 무엇입니까?

분류에서Dev

PHP 양식을 사용하여 한 번에 여러 이미지를 ulpload하는 방법은 무엇입니까?

분류에서Dev

여러 캔버스가 포함 된 섹션 뒤에 섹션을 추가하는 방법은 무엇입니까?

분류에서Dev

Google 크롬에서 한 번에 여러 로컬 HTML 파일을 여는 방법은 무엇입니까?

분류에서Dev

R의 동일한 플롯에서 행렬의 여러 열을 그리는 방법은 무엇입니까?

분류에서Dev

Matlab 축에서 여러 개의 클릭 한 점을 그리는 방법은 무엇입니까?

분류에서Dev

OpenGL C ++에서 여러 삼각형을 그리는 방법은 무엇입니까?

분류에서Dev

동일한`main.tf`에서 모듈을 여러 번 재사용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    클래스를 사용하여 tkinter 캔버스에 다각형을 그리는 방법은 무엇입니까?

  2. 2

    캔버스-한 번에 여러 이미지에 애니메이션을 적용하는 방법은 무엇입니까?

  3. 3

    Android 캔버스에 부분 원형 사각형을 그리는 방법은 무엇입니까?

  4. 4

    이미지에서 마우스로 여러 직사각형을 그리는 방법은 무엇입니까?

  5. 5

    drawImage ()를 사용하여 캔버스에 그림을 그리는 방법은 무엇입니까?

  6. 6

    wpf에서 사각형의 높이를 수정 한 후 캔버스에서 사각형을 재정렬하는 방법은 무엇입니까?

  7. 7

    한 번에 여러 CSV 행을 작성하는 방법은 무엇입니까?

  8. 8

    한 번에 여러 열을 연결하는 방법은 무엇입니까?

  9. 9

    한 번에 여러 행을 만드는 방법은 무엇입니까?

  10. 10

    전단지 addGeoJSON () 함수를 사용하여 한 번에 여러 다각형을 표시하는 방법은 무엇입니까?

  11. 11

    SharedPreference를 사용하여 캔버스에 문자열을 그리는 방법은 무엇입니까?

  12. 12

    한 번에 여러 열의 여러 행을 그룹화하고 결합하는 방법은 무엇입니까?

  13. 13

    OpenGL을 사용하여 중앙의 버튼에 사각형을 그리는 방법은 무엇입니까?

  14. 14

    itext pdf를 사용하여 PDF 캔버스에 경로를 그리는 방법은 무엇입니까?

  15. 15

    VBA를 사용하여 한 번에 여러 그래프에서 XY 축과 형식의 동일한 제목을 변경하는 방법은 무엇입니까?

  16. 16

    캔버스에서 사각형의 음수 그리기를 중지하는 방법은 무엇입니까?

  17. 17

    드래그 가능한 캔버스 위젯을 여러 개 사용하는 방법은 무엇입니까?

  18. 18

    한 그림에서 여러 개의 numpy 배열을 그리는 방법은 무엇입니까?

  19. 19

    nano에서 한 번에 여러 줄을 주석 처리하는 방법은 무엇입니까?

  20. 20

    메모장 ++에서 한 번에 여러 줄을 주석 처리하는 방법은 무엇입니까?

  21. 21

    C #을 사용하여 WPF의 캔버스에 수직으로 직사각형을 하나씩 추가하는 방법은 무엇입니까?

  22. 22

    한 번에 여러 SAS 프로그램을 끄는 방법은 무엇입니까?

  23. 23

    PHP 양식을 사용하여 한 번에 여러 이미지를 ulpload하는 방법은 무엇입니까?

  24. 24

    여러 캔버스가 포함 된 섹션 뒤에 섹션을 추가하는 방법은 무엇입니까?

  25. 25

    Google 크롬에서 한 번에 여러 로컬 HTML 파일을 여는 방법은 무엇입니까?

  26. 26

    R의 동일한 플롯에서 행렬의 여러 열을 그리는 방법은 무엇입니까?

  27. 27

    Matlab 축에서 여러 개의 클릭 한 점을 그리는 방법은 무엇입니까?

  28. 28

    OpenGL C ++에서 여러 삼각형을 그리는 방법은 무엇입니까?

  29. 29

    동일한`main.tf`에서 모듈을 여러 번 재사용하는 방법은 무엇입니까?

뜨겁다태그

보관