캔버스 경로 스타일을 재설정하는 방법은 무엇입니까?

라이 32290

다음과 같이 캔버스 모양과 선을 그리는 함수를 만들었습니다.

    function drawBaseline(ctx, lineLeft, lineTop, lineEndLeft, strockWidth, strockColor) {
        ctx.beginPath();
        ctx.lineWidth   = strockWidth;
        ctx.strokeStyle = strockColor;
        ctx.moveTo(lineLeft, lineTop);
        ctx.lineTo(lineEndLeft, lineTop);
        ctx.stroke();
    }

    function drawDashedLine(ctx, lineLeft, lineTop, lineEndLeft, strockWidth, strockColor, lineDash) {
        ctx.beginPath();
        ctx.setLineDash(lineDash);
        ctx.lineCap = 'round';
        ctx.moveTo(lineLeft, lineTop);
        ctx.lineWidth   = strockWidth;
        ctx.strokeStyle = strockColor;
        ctx.lineTo(lineEndLeft, lineTop);
        ctx.stroke();
    }

내가 호출 할 때 그러나 drawBaselinedrawDashedLine, 너무 점선 도면이다.

    drawDashedLine(ctx, 0, lineTop, 300, 5, 'red', [5, 20]);
    drawBaseline(ctx, 0, lineTop, canvas.width, 1, 'black');

컨텍스트 재설정을 재설정하여 새 개체를 그리는 방법은 무엇입니까?

카이도

느리지 만 게으른 방법 ctx.save()은 경로 스타일을 설정하기 전에 호출 한 다음 ctx.restore()완료했을 때 호출 하는 것입니다.

하지만이 저장됩니다 모든 사용자의 컨텍스트의 속성을, 그리고 아마 당신이 접촉하지 않은 많은 ( fillStyle, strokeStyle, 변형 매트릭스, 클리핑 영역 globalAlpha, GCO, dashOffset, lineCap, 글꼴, 텍스트 정렬 ... : 그들 모두 ) .
또한 어떤 이유로 든을 호출 restore()하는 것을 잊은 save()경우 저장된 상태가 메모리에 누적되므로 좋지 않습니다.

function drawBaseline(ctx, lineLeft, lineTop, lineEndLeft, strockWidth, strockColor) {
  ctx.save();
  ctx.beginPath();
  ctx.lineWidth = strockWidth;
  ctx.strokeStyle = strockColor;
  ctx.moveTo(lineLeft, lineTop);
  ctx.lineTo(lineEndLeft, lineTop);
  ctx.stroke();
  // now restore all properties
  ctx.restore();
}

function drawDashedLine(ctx, lineLeft, lineTop, lineEndLeft, strockWidth, strockColor, lineDash) {
  ctx.save();
  ctx.beginPath();
  ctx.setLineDash(lineDash);
  ctx.lineCap = 'round';
  ctx.moveTo(lineLeft, lineTop);
  ctx.lineWidth = strockWidth;
  ctx.strokeStyle = strockColor;
  ctx.lineTo(lineEndLeft, lineTop);
  ctx.stroke();
  // now restore all properties
  ctx.restore();
}

var ctx = canvas.getContext('2d');
var lineTop = 100;

drawDashedLine(ctx, 0, lineTop, 300, 5, 'red', [5, 20]);
drawBaseline(ctx, 0, lineTop, canvas.width, 1, 'black');
<canvas id="canvas"></canvas>

그런 다음 수정 한 모든 속성을 기본값으로 다시 설정 하는 것이 좋습니다 .
(귀하의 경우 ctx.strokeStyle ="#000"; ctx.lineWidth=1; ctx.setLineDash([]);)

function drawBaseline(ctx, lineLeft, lineTop, lineEndLeft, strockWidth, strockColor) {
  ctx.beginPath();
  ctx.lineWidth = strockWidth;
  ctx.strokeStyle = strockColor;
  ctx.moveTo(lineLeft, lineTop);
  ctx.lineTo(lineEndLeft, lineTop);
  ctx.stroke();
  // now reset all set properties to their defaults
  ctx.lineWidth = 1;
  ctx.strokeStyle = '#000';
}

function drawDashedLine(ctx, lineLeft, lineTop, lineEndLeft, strockWidth, strockColor, lineDash) {
  ctx.beginPath();
  ctx.setLineDash(lineDash);
  ctx.lineCap = 'round';
  ctx.moveTo(lineLeft, lineTop);
  ctx.lineWidth = strockWidth;
  ctx.strokeStyle = strockColor;
  ctx.lineTo(lineEndLeft, lineTop);
  ctx.stroke();
  // now reset all set properties to their defaults
  ctx.lineWidth = 1;
  ctx.strokeStyle = '#000';
  ctx.setLineDash([]);
}

var ctx = canvas.getContext('2d');
var lineTop = 100;

drawDashedLine(ctx, 0, lineTop, 300, 5, 'red', [5, 20]);
drawBaseline(ctx, 0, lineTop, canvas.width, 1, 'black');
<canvas id="canvas"></canvas>

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

충돌 감지로 캔버스 채우기 스타일을 변경하는 방법은 무엇입니까?

분류에서Dev

캔버스 크기를 배경 이미지로 설정하는 방법은 무엇입니까?

분류에서Dev

캔버스 크기를 배경 이미지로 설정하는 방법은 무엇입니까?

분류에서Dev

P5.js 설정을 연결하고 HTML 캔버스로 그리는 방법은 무엇입니까?

분류에서Dev

WPF 캔버스의 현재 경계를 결정하는 방법은 무엇입니까?

분류에서Dev

버튼 스타일을 변경하는 방법은 무엇입니까?

분류에서Dev

스타일 구성 요소의 스타일을 동적으로 변경하는 방법은 무엇입니까?

분류에서Dev

캔버스의 크기를 프로그래밍 방식으로 변경하는 방법은 무엇입니까?

분류에서Dev

클릭 후 일시적으로 Android 버튼 스타일을 변경하는 방법은 무엇입니까?

분류에서Dev

HTML5 캔버스 컨텍스트를 기본값으로 재설정하는 방법은 무엇입니까?

분류에서Dev

Dart로 SVG 스타일을 지정하는 방법은 무엇입니까?

분류에서Dev

경로 변경시 스크롤 위치를 재설정하는 방법은 무엇입니까?

분류에서Dev

노드 스타일을 변경하기 위해 키를 설정하는 방법은 무엇입니까?

분류에서Dev

커스텀 스타일을 antd Select로 설정하는 방법은 무엇입니까?

분류에서Dev

RGBA 스타일 색상을 캔버스 친화적 인 색상으로 변환하는 방법은 무엇입니까?

분류에서Dev

인라인 스타일을 동적으로 재정의하는 방법은 무엇입니까?

분류에서Dev

인라인 스타일을 동적으로 재정의하는 방법은 무엇입니까?

분류에서Dev

SVG 파일을 Fabricjs 캔버스로 드래그 앤 드롭하는 방법은 무엇입니까?

분류에서Dev

캔버스에서 특정 모양의 속성을 변경하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

# 문자로 된 단어에 스타일을 설정하는 방법은 무엇입니까?

분류에서Dev

React Native에서 클릭으로 동적 스타일을 설정하는 방법은 무엇입니까?

분류에서Dev

캔버스에 HTML로 비트 맵 파일을 그리는 방법은 무엇입니까?

분류에서Dev

런타임 컴파일을 위해 컨텍스트 클래스 로더의 클래스 경로를 설정하는 방법은 무엇입니까?

분류에서Dev

양식 제출을 기반으로 jQuery로 CSS 스타일을 변경하는 방법은 무엇입니까?

분류에서Dev

동적으로 변경할 때 MenuItem (antd)의 스타일을 변경하는 방법은 무엇입니까?

분류에서Dev

세 가지 모드에서 버튼 텍스트 스타일을 변경하는 방법은 무엇입니까?

분류에서Dev

스타일 속성을 변수에 경로로 저장하는 방법은 무엇입니까?

분류에서Dev

WPF에서 마우스 오버시 타일 배경을 변경하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    충돌 감지로 캔버스 채우기 스타일을 변경하는 방법은 무엇입니까?

  2. 2

    캔버스 크기를 배경 이미지로 설정하는 방법은 무엇입니까?

  3. 3

    캔버스 크기를 배경 이미지로 설정하는 방법은 무엇입니까?

  4. 4

    P5.js 설정을 연결하고 HTML 캔버스로 그리는 방법은 무엇입니까?

  5. 5

    WPF 캔버스의 현재 경계를 결정하는 방법은 무엇입니까?

  6. 6

    버튼 스타일을 변경하는 방법은 무엇입니까?

  7. 7

    스타일 구성 요소의 스타일을 동적으로 변경하는 방법은 무엇입니까?

  8. 8

    캔버스의 크기를 프로그래밍 방식으로 변경하는 방법은 무엇입니까?

  9. 9

    클릭 후 일시적으로 Android 버튼 스타일을 변경하는 방법은 무엇입니까?

  10. 10

    HTML5 캔버스 컨텍스트를 기본값으로 재설정하는 방법은 무엇입니까?

  11. 11

    Dart로 SVG 스타일을 지정하는 방법은 무엇입니까?

  12. 12

    경로 변경시 스크롤 위치를 재설정하는 방법은 무엇입니까?

  13. 13

    노드 스타일을 변경하기 위해 키를 설정하는 방법은 무엇입니까?

  14. 14

    커스텀 스타일을 antd Select로 설정하는 방법은 무엇입니까?

  15. 15

    RGBA 스타일 색상을 캔버스 친화적 인 색상으로 변환하는 방법은 무엇입니까?

  16. 16

    인라인 스타일을 동적으로 재정의하는 방법은 무엇입니까?

  17. 17

    인라인 스타일을 동적으로 재정의하는 방법은 무엇입니까?

  18. 18

    SVG 파일을 Fabricjs 캔버스로 드래그 앤 드롭하는 방법은 무엇입니까?

  19. 19

    캔버스에서 특정 모양의 속성을 변경하는 방법은 무엇입니까?

  20. 20

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

  21. 21

    # 문자로 된 단어에 스타일을 설정하는 방법은 무엇입니까?

  22. 22

    React Native에서 클릭으로 동적 스타일을 설정하는 방법은 무엇입니까?

  23. 23

    캔버스에 HTML로 비트 맵 파일을 그리는 방법은 무엇입니까?

  24. 24

    런타임 컴파일을 위해 컨텍스트 클래스 로더의 클래스 경로를 설정하는 방법은 무엇입니까?

  25. 25

    양식 제출을 기반으로 jQuery로 CSS 스타일을 변경하는 방법은 무엇입니까?

  26. 26

    동적으로 변경할 때 MenuItem (antd)의 스타일을 변경하는 방법은 무엇입니까?

  27. 27

    세 가지 모드에서 버튼 텍스트 스타일을 변경하는 방법은 무엇입니까?

  28. 28

    스타일 속성을 변수에 경로로 저장하는 방법은 무엇입니까?

  29. 29

    WPF에서 마우스 오버시 타일 배경을 변경하는 방법은 무엇입니까?

뜨겁다태그

보관