>  기사  >  웹 프론트엔드  >  캔버스 게임 개발 학습 5부: 스타일 및 색상 사용(1)

캔버스 게임 개발 학습 5부: 스타일 및 색상 사용(1)

黄舟
黄舟원래의
2017-01-16 17:49:531252검색

지금까지 우리는 콘텐츠를 그리는 방법만 보았습니다. 그래픽에 색상을 지정하려면 fillStyle
및 스트로크 스타일이라는 두 가지 중요한 속성이 있습니다.

fillStyle = color
strokeStyle = color


trokeStyle은 그래픽 외곽선의 색상을 설정하는 데 사용되고, fillStyle은 채우기 색상을 설정하는 데 사용됩니다. color는 CSS 색상 값을 나타내는 문자열, 그라데이션 객체 또는 패턴 객체일 수 있습니다. 나중에 그라디언트 및 패턴 개체에 대해 다시 다루겠습니다. 기본적으로 선 및 채우기 색상은 검은색입니다(CSS 색상 값 #000000). 입력하는 내용은 CSS3 색상 값 표준을 준수하는 유효한 문자열이어야 합니다. 아래 예시는 모두 동일한 색상을 나타냅니다.

// 这些 fillStyle 的值均为 '橙色'  
 ctx.fillStyle = "orange";  
 ctx.fillStyle = "#FFA500";  
 ctx.fillStyle = "rgb(255,165,0)";  
 ctx.fillStyle = "rgba(255,165,0,1)"

참고: 현재 Gecko 엔진은 모든 CSS 3 색상 값을 지원하지 않습니다. 예를 들어, hsl(100%,25%,0) 또는 rgb(0,100%,0)은 사용할 수 없습니다. 그러나 위 예의 규칙을 따른다면 아무런 문제가 없을 것입니다. 스트로크 스타일 또는 채우기 스타일의 값을 변경하면 새 값이 새로 그려진 그래픽의 기본값이 됩니다. 각 도형에 다른 색상을 지정하려면 fillStyle 또는 스트로크 스타일
값을 재설정해야 합니다.

fillStyle

이 예에서는 for
루프의 두 레이어를 다시 사용하여 각 사각형이 서로 다른 색상을 갖는 사각형 배열을 그립니다. 결과는 오른쪽과 같으나 이를 구현하는데 사용된 코드는 그리 화려하지는 않습니다. i, j 두 개의 변수를 사용하여 각 사각형에 고유한 RGB 색상 값을 생성했는데, 여기서 빨간색과 녹색 채널 값만 수정되고 파란색 채널 값은 변경되지 않은 채 그대로 유지되었습니다. 이러한 색상 채널의 값을 수정하여 다양한 색상 팔레트를 생성할 수 있습니다. 그라디언트의 빈도를 높이면 Photoshop의 색상 팔레트와 유사한 색상 팔레트를 그릴 수도 있습니다.

캔버스 게임 개발 학습 5부: 스타일 및 색상 사용(1)

function draw() {  
   var ctx = document.getElementById('canvas').getContext('2d');  
   for (var i=0;i<6;i++){  
     for (var j=0;j<6;j++){  
       ctx.fillStyle = &#39;rgb(&#39; + Math.floor(255-42.5*i) + &#39;,&#39; +   
                        Math.floor(255-42.5*j) + &#39;,0)&#39;;  
       ctx.fillRect(j*25,i*25,25,25);  
     }  
   }  
 }

StrokeStyle
예제

이 예는 위와 다소 비슷하지만 이번에는 스트로크 스타일 속성을 사용하고 드로잉은 하지 않습니다. 정사각형이지만 원을 그리려면 호 방법을 사용하세요.


캔버스 게임 개발 학습 5부: 스타일 및 색상 사용(1)

function draw() {  
     var ctx = document.getElementById(&#39;canvas&#39;).getContext(&#39;2d&#39;);  
     for (var i=0;i<6;i++){  
       for (var j=0;j<6;j++){  
         ctx.strokeStyle = &#39;rgb(0,&#39; + Math.floor(255-42.5*i) + &#39;,&#39; +   
                          Math.floor(255-42.5*j) + &#39;)&#39;;  
         ctx.beginPath();  
         ctx.arc(12.5+j*25,12.5+i*25,10,0,Math.PI*2,true);  
         ctx.stroke();  
       }  
     }  
   }

투명도

단색 그래픽을 그리는 것 외에도 캔버스를 사용하여 반투명 그래픽을 그릴 수도 있습니다. . globalAlpha
속성을 ​​설정하거나 반투명 색상을 윤곽선이나 채우기로 사용하여 스타일을 지정하세요.

globalAlpha = transparency value

이 속성은 캔버스에 있는 모든 그래픽의 투명도에 영향을 미칩니다. 유효한 값 범위는 0.0(완전 투명)에서 1.0(완전 불투명)이며 기본값은 1.0입니다. globalAlpha
속성은 동일한 투명도로 많은 수의 그래픽을 그릴 때 매우 효율적입니다. 그러나 나는 다음의 방법이 더 타당하다고 생각한다. 스트로크 스타일 및 채우기 스타일 속성은 CSS 3 사양을 준수하는 색상 값을 허용하므로 다음 작성 방법을 사용하여 투명도가 있는 색상을 설정할 수 있습니다.

// Assigning transparent colors to stroke and fill style  
  ctx.strokeStyle = "rgba(255,0,0,0.5)";  
  ctx.fillStyle = "rgba(255,0,0,0.5)";

rgba() 메서드는 rgb() 메서드와 유사하지만 색상 투명도 설정을 위한 추가 매개변수가 있습니다. 유효한 범위는 0.0(완전 투명)부터 1.0(완전 불투명)까지입니다.

globalAlpha

이 예에서는 4색 그리드를 배경으로 사용하고 globalAlpha
를 0.2로 설정한 다음 반경이 증가하는 일련의 반투명 원을 그립니다. 그것에. 최종 결과는 방사형 그라데이션 효과입니다. 원을 더 많이 추가할수록 원래 그려진 원의 투명도가 낮아집니다. 루프 수를 늘리고 원을 더 많이 그리면 배경 이미지의 중앙 부분이 완전히 사라집니다.

캔버스 게임 개발 학습 5부: 스타일 및 색상 사용(1)

function draw() {  
   var ctx = document.getElementById(&#39;canvas&#39;).getContext(&#39;2d&#39;);  
   // draw background  
   ctx.fillStyle = &#39;#FD0&#39;;  
   ctx.fillRect(0,0,75,75);  
   ctx.fillStyle = &#39;#6C0&#39;;  
   ctx.fillRect(75,0,75,75);  
   ctx.fillStyle = &#39;#09F&#39;;  
   ctx.fillRect(0,75,75,75);  
   ctx.fillStyle = &#39;#F30&#39;;  
   ctx.fillRect(75,75,150,150);  
   ctx.fillStyle = &#39;#FFF&#39;;  
   
   // set transparency value  
   ctx.globalAlpha = 0.2;  
   
   // Draw semi transparent circles  
   for (var i=0;i<7;i++){  
       ctx.beginPath();  
       ctx.arc(75,75,10+10*i,0,Math.PI*2,true);  
       ctx.fill();  
   }  
 }

rgba()示例

第二个例子和上面那个类似,不过不是画圆,而是画矩形。这里还可以看出,rgba()可以分别设置轮廓和填充样式,因而具有更好的可操作性和使用弹性。

캔버스 게임 개발 학습 5부: 스타일 및 색상 사용(1)

function draw() {  
      var ctx = document.getElementById(&#39;canvas&#39;).getContext(&#39;2d&#39;);  
      
      // Draw background  
      ctx.fillStyle = &#39;rgb(255,221,0)&#39;;  
      ctx.fillRect(0,0,150,37.5);  
      ctx.fillStyle = &#39;rgb(102,204,0)&#39;;  
      ctx.fillRect(0,37.5,150,37.5);  
      ctx.fillStyle = &#39;rgb(0,153,255)&#39;;  
      ctx.fillRect(0,75,150,37.5);  
      ctx.fillStyle = &#39;rgb(255,51,0)&#39;;  
      ctx.fillRect(0,112.5,150,37.5);  
     
     // Draw semi transparent rectangles  
      for (var i=0;i<10;i++){  
        ctx.fillStyle = &#39;rgba(255,255,255,&#39;+(i+1)/10+&#39;)&#39;;  
        for (var j=0;j<4;j++){  
          ctx.fillRect(5+i*14,5+j*37.5,14,27.5)  
        }  
      }  
    }

以上就是canvas游戏开发学习之五:运用样式与颜色(一)的内容,更多相关内容请关注PHP中文网(www.php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.