Ÿ 캔버스의크기와드로잉표면의크기 <canvas> 요소의 width/height 속성사용하여변경하면캔버스크기를드로잉표면의크기로자동변경한다. CSS를사용해서캔버스크기를지정하는경우는드로잉표면의크기는변경할수없기때문에캔버스와드로잉표면의불일치로인하여예기치않은결과를발생시킬수있음에주

Similar documents
쉽게 풀어쓴 C 프로그래밍

예제 <!DOCTYPE html><html><head> <script type="text/javascript"> function arcto() { var canvas = document.getelementbyid('canvas'); context = canvas.get

1.2 도형변환 Ÿ 캔버스의좌표계의이동, 회전및확대 / 축소기능을통한도형의변환을제공한다. Ÿ translate() 메서드는좌표공간의시작점을 (x,y) 로이동한다. Ÿ rotate() 메서드는좌표공간을시계방향으로회전한다. Ÿ scale() 메서드는좌표공간을수평 / 수직방

PowerPoint 프레젠테이션

01장 웹 개요와 실습 환경 구축

HTML5-11강 캔버스2 - 드로잉 확장

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

HTML5-³¹Àå¿ë.PDF

이장에서다룰내용 테두리를제어하는스타일시트 외부여백 (Margin) 과내부여백 (Padding) 관련속성 위치관련속성 2

HTML5

슬라이드 1

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

Microsoft PowerPoint - logo_2-미해답.ppt [호환 모드]

PowerPoint 프레젠테이션

Microsoft PowerPoint - web-part02-ch16-이벤트.pptx

Microsoft PowerPoint - web-part01-ch10-문서객체모델.pptx

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Microsoft PowerPoint 세션.ppt

Ÿ column-rule 속성은단사이의구분선을표현하기위한속성으로 column-rule-color, column-rule-style, column-rule-width 속성을한번에지정할수있다. 1.4 단의확장 Ÿ column-span 속성은다단을구성할때해당요소가얼마나많은단

Microsoft PowerPoint - web-part01-ch09-브라우저객체모델.pptx

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

Open GL

Microsoft PowerPoint 웹 연동 기술.pptx

e-비즈니스 전략 수립

HTML5

PowerPoint Presentation

1989 Tim Berners-Lee invents the Web with HTML 1991 First Web Browser Released HTML Tags Specification Released 1994 First World Wide Web Conference H

기본도형과작도 1 강 - 연습문제 1. 오른쪽그림과같이직선l 위에점,, 가있을때, 옳지않은것은? 1 = 2 = 3 = 직선l 4 = 5 = l 2. 오른쪽그림에서 = = 이다. 다음( ) 안에알맞은수를쓰시오. 1 =( 2 =( 3 =( 4 =( ) ) ) ) 3. 한평

벡터(0.6)-----.hwp

미쓰리 파워포인트

Microsoft PowerPoint - 05geometry.ppt

xlogo 1.0 beta version < 기본중의기본 > 1. 키워드 ( 명령어 ) 는변수명으로사용될수없다. 2. 키워드는대소문자를구분하지않고사용할수있다. 3. 변수명은대소문자를구분한다. 4. 변수를명시적으로정의하는과정필요없이값을대입하는순간변수정의되고, 대입한값의성

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint Presentation

WebGL 레슨 3 - 회전 운동

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

Javascript

도형의닮음 1 강 - 닮은도형과닮음중심 사이버스쿨우프선생 닮음도형 : 일정한비율로확대또는축소하였을때닮음모양의도형 기호 : ABCD A'B'C'D' [ 예제 1 ] 그림에서와같이두닮은도형 ABCD 와 A'B'C'D' 에서대응점, 대

HTML5

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

chap 5: Trees

AMP는 어떻게 빠른 성능을 내나.key

기초제도14강

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co

제 53 회서울특별시과학전람회 예선대회작품설명서 본선대회작품설명서 쓰나미의피해를최소화시키는건물과 건물배치에대한탐구 출품번호 S-504 출품분야학생부출품부문지구과학 학교명학년 ( 직위 ) 성명

Prototype에서 jQuery로 옮겨타기

쉽게 풀어쓴 C 프로그래밍

Week3

gnu-lee-oop-kor-lec06-3-chap7

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

PowerPoint 프레젠테이션

PowerPoint Presentation

2장 변수와 프로시저 작성하기

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - ch07 - 포인터 pm0415

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

웹개발을위한 ComponentOne 사용법 (2) 권대건 부산대학교컴퓨터공학과 Abstract 최근웹개발이활성화되면서전문가를위한여러가지 Tool 웹애플리케이션형태로제공하는경우가늘고있다. ComponentOne 은.NET 기반의 UI C

- 이벤트의처리 <input type= button id= button1 value= 확인 /> <input type= button id= button2 value= 확인 /> 자바스크립트인경우 : document.getelementbyid( button1 ).oncl

Week8-Extra

<4D F736F F F696E74202D204347C3E2BCAEBCF6BEF D325FC4C4C7BBC5CDB1D7B7A1C7C8BDBA20B1E2BABBBFE4BCD22E >

8장.그래픽 프로그래밍

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

데이터 시각화

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

Chap 6: Graphs

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx

UI TASK & KEY EVENT

제11장 프로세스와 쓰레드

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Lab10

HTML5

Lab1

슬라이드 1

Microsoft PowerPoint - 05장(함수) [호환 모드]

단국대학교멀티미디어공학그래픽스프로그래밍중간고사 (2011 년봄학기 ) 2011 년 4 월 26 일학과학번이름 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤

KNK_C_05_Pointers_Arrays_structures_summary_v02

PowerPoint Presentation

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

ACTIONSCRIPT™ 3.0 프로그래밍

실험 5

Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint 프레젠테이션

1 peaieslvfp3 1. 두점사이의거리 수직선위의두점사이의거리를구할수있다. 좌표평면위의두점사이의거리를구할수있다. 수직선위의두점사이의거리 todrkrgo qhqtlek 오른쪽그림은충무로역을중심으로한서울시지하철 3`호선노선도의일부분이다. 충무로역을` 0, 을지로 3`

Transcription:

1. 기본내용 1.1 캔버스 Ÿ canvas 요소는웹페이지에서자바스크립트를통해즉시그림을그리는데사용되며단순한그림표현을넘어여러효과와함께텍스트및애니메이션표현이가능하다. Ÿ 그림을그리기위해서는 <canvas> 를사용해서그림영역을지정하고, 자바스크립트를사용해서실제그림을그린다. 1.2 캔버스좌표시스템 Ÿ 캔버스의좌표시스템은 2D 컨텍스트로, 왼쪽상단모서리에있는평면직교표면을 (0,0) 으로시작해서오른쪽으로 X 좌표값이, 아래쪽으로 Y 좌표값이증가하는구조이다. 1.3 그림영역지정 Ÿ canvas 요소에가로및세로크기를지정하지않으면, 브라우저는자동으로가로 300 픽셀, 세로 150픽셀크기의캔버스를생성한다. width 속성과 height 속성을이용하여캔버스의크기를변경할수있다. 예제 <!DOCTYPE html><html><head></head> <body> <canvas id="canvas" width="700" height="400" style="border:solid 1px #ff0000"> 이브라우저는canvas를지원하지않습니다.</canvas> </body></html> - 1 -

Ÿ 캔버스의크기와드로잉표면의크기 <canvas> 요소의 width/height 속성사용하여변경하면캔버스크기를드로잉표면의크기로자동변경한다. CSS를사용해서캔버스크기를지정하는경우는드로잉표면의크기는변경할수없기때문에캔버스와드로잉표면의불일치로인하여예기치않은결과를발생시킬수있음에주의해야한다. Ÿ 브라우저화면의크기를기준으로캔버스크기를변경하는경우는윈도우객체의 innerwidth 및 innerheight 값을이용한다. 1.4 캔버스컨텍스트 Ÿ 컨텍스트는모든그래픽능력을제공한다. 캔버스는컨텍스트를위한컨테이너로서의역할만하고실제로캔버스에그리는등의기능들은모두컨텍스트를통하여처리한다. 1.5 캔버스상태의저장및복원 Ÿ 드로잉상태를저장하고복원하기위한 context.save() context.restore() 메소드를제공한다. Ÿ 드로잉상태는현재의변환행렬, 현재의클리핑영역으로구성되어있다. 예제 - 2 -

<!DOCTYPE html><html><head> function save_restore() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); / * 드로잉상태를 3 개저장 * / var colors = new Array ( "red", "blue", "green"); var alphas = new Array (0.2, 0.5, 0.8); for (var i = 0; i < 3; i++) { context.fillstyle = colors[i]; context.globalalpha = alphas[i]; context.save(); / * 저장된드로잉상태를복원하여원 3개를그린다 * / for (var i = 0; i < 3; i++) { context.restore(); context.arc((i+1) * 120, 120, 100, 0, Math.PI * 2, false); context.fill(); </head> <body onload="save_restore();"> <canvas id="mycanvas" width="500" height="250" style="border: 10px inset #aaa"> 캔버스에사각형그리기연습 </canvas></body> </html> 1.6 드로잉작업을위한기본형태 Ÿ 브라우저에그림을그리기위해서는캔버스요소를사용하여그림을그리고자하는영역을정의하고실제그림을그리는것은자바스크립트를사용하여그린다. - 3 -

Ÿ canvas 요소에폭과높이를지정하고, 자바스크립트에서사용할아이디값을지정한다. Ÿ canvas 요소의아이디를문서의 getelementbyid( 아이디 ) 메서드를호출하여 canvas 객체를생성하고 getcontext( 2d ) 메서드를호출하여그리기컨텍스트를생성한다. 예제 <!DOCTYPE html><html><head> <style> canvas { margin: 10px; padding 10px; border: 10px inset #aaa </style> function drawtext () { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); context.font = "24pt 굴림체 "; context.fillstyle = "maroon"; context.filltext(" 그림을그립시다 ", canvas.width/2-130, canvas.height/2 + 15); </head> <body onload="drawtext();"> <canvas id="mycanvas" width="300" height="200"> 이브라우저는 canvas 요소를지원하지않습니다. </canvas> </body></html> - 4 -

2. 사각형그리기 2.1 사각형그리기 Ÿ 시작점 (x, y) 을제공하고, 다른 2 개는사각형의폭 (W) 및높이 (H) 를제공한다. 2.2 사각형그리기관련메서드 Ÿ context.fillrect (x, y, w, h) 메서드는색이채워진사각형영역을그린다. 현재의채우기스타일 fillstyle 속성을사용하여지정한사각형영역의캔버스에채워진사각형을그린다. Ÿ context.strokerect (x, y, w, h) 메서드는테두리만있는사각형영역을그린다. Ÿ context.clearrect (x, y, w, h) 메서드는지정한사각형영역을지운다. 현재클리핑영역과교차하는지정한사각형영역에있는모든픽셀을투명한검은색으로채운다. 예제사각형그리기 <!DOCTYPE html><html><head> function rect() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); context.linejoin = "round"; context.linewidth = 20; context.strokestyle = "blue"; context.fillstyle = "green"; context.strokerect(50, 100, 200, 200); context.fillrect(300, 100, 200, 200); context.fillrect(550, 100, 200, 200); context.clearrect(600, 150, 100, 100); </head> <body onload="rect();"> <canvas id="mycanvas" width="800" height="400" style="border: 10px inset #aaa"> - 5 -

캔버스에사각형그리기연습 </canvas> </body> </html> 3. 선그리기 3.1 패스와서브패스 Ÿ 캔버스에서는각도형들을이루는선들의집합을패스 (Path) 라고하고각각의선을서브패스라고한다. Ÿ 컨텍스트의메서드를이용하여선이나도형을그리고자할때는 beginpath() 함수를호출하여패스를초기화한다. 그리고다양한메서드를사용하여패스를지정하고선이나도형을그린다. 마지막으로지정한패스를닫고선이나도형을출력해야한다. Ÿ beginpath() 메서드는현재패스를초기화한다. 이전까지그렸던패스를모두초기화하고새로운패스를그린다는의미이다. Ÿ closepath() 메서드는현재패스를닫는다. 패스그리는것을종료한다는의미이다. Ÿ lineto(x, y) 메서드는직선을연결한다. 이전위치에서의점과현재서브패스에주어진점을추가하여선을그린다. Ÿ moveto(x, y) 메서드는주어진점으로시작하는새로운서브패스를만든다. Ÿ stroke() 메서드는현재패스또는주어진패스의서브패스를현재의선스타일로그린다. Ÿ fill() 메서드는현재패스또는주어진패스의서브패스를현재의채우기스타일로채운다. Ÿ rect(x, y, w, h) 메서드는사각형을그린다. 3.2 선그리기 Ÿ 시작점을지정하기위해서는 moveto() 메서드를사용한다. 그리고다음위치까지의점을지정하여선을그리기위해서는 lineto() 메서드를사용한다. 그리고 stroke() 메서드를사용해서선을출력한다. - 6 -

예제선그리기 <!DOCTYPE html><html><head> function Line() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); context.moveto(20, 20); context.lineto(150, 150); context.lineto(150, 20); context.lineto(280, 150); </head> <body onload="line();"> <canvas id="mycanvas" width="800" height="400" style="border: 10px inset #aaa"> 캔버스에사각형그리기연습 </canvas> </body></html> 3.3 선의경계와픽셀경계 Ÿ 일반적으로픽셀을다루는컴퓨터그래픽시스템에서는픽셀의위치를정수단위로처리하기때문에픽셀의경계또한정수단위로이루어진다. 그리고캔버스컨텍스트에서는선을그릴때두께를지정할수있기때문에선의중간에서상하 / 좌우 0.5 픽셀만큼씩그리려고한다. 따라서왼쪽그림과같이 1.5에서상하 0.5 픽셀만큼확장하고, 2.5에서상하 0.5픽셀만큼확장하기때문에결국에는 2픽셀크기만큼선이그려진다. 그러나오른쪽그림에서는상하 0.5 픽셀만큼씩확장하면정수단위의픽셀만큼씩확장하면정수단위의픽셀경계가되기때문에 1픽셀만큼만그려지는것을볼수있다. 정확한픽셀두께만큼의선을그리려면펙셀사이의실수값위치를지정해야함을잊지말자. - 7 -

3.4 다각형그리기 Ÿ 선그리기메서드에서 closepath() 메서드를사용하면다각형을그릴수있다. Ÿ closepath() 메서드는선이마지막으로종료된지점과최초의지점을자동을연결한다. 예제선그리기 <!DOCTYPE html><html><head> function polygon() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); context.moveto(150, 10); context.lineto(80, 350); context.lineto(350, 350); context.lineto(280, 10); context.closepath(); </head> <body onload="polygon();"> <canvas id="mycanvas" width="600" height="400" style="border: 10px inset #aaa"> 캔버스에그리기연습 </canvas> </body> </html> 3.4.1 정다각형을그리는알고리즘 Ÿ 정다각형은모든각도와모든측면이동일하다. 또한모든꼭지점은원안에위치한다는것을확인할수있다. Ÿ 입력 : 좌표 (x, y), 반지름 (R), 면의수 (N), 시작각도 (startangle) - 8 -

Ÿ 원의반지름 (R) 과면의수 (N) 를계산한다. (3 각형은 3 면, 4 각형은 4 면, 5 각형은 5 면 ) if ( N < 3) return; Ÿ 원의중심으로부터정다각형의각측면에의한각도 (360/N) 계산한다. Ÿ var degree = (Math.PI*2)/N; context.save(); context.translate(x,y); context.rotate(startangle); 첫번째꼭지점의위치를 (R, 0) 으로지정 context.moveto(r, 0); Ÿ 면의수 (N) 만큼루프를통해서꼭지점이위치하는각도계산한다. 각꼭지점들끼리의드로잉을수행한다. for (var i=0; i<n; i++) context.lineto(r*math.cos(degree*i), R*Math.sin(degree*i)); context.closepath(); context.restore(); 3.5 점선그리기 Ÿ context.setlinedash(segments) 는현재점선의패턴을설정한다. segments 값은점선의패턴으로선이그려지는부분과그려지지않는부분이반복되는배열이된다. Ÿ segment = context.getlinedash( ) 는현재점선의패턴을반환한다. Ÿ context.linedashoffset [=value] 점선모양의패턴과동일한단위에서의위상오프셋을반환한다. 선의모양의점선패턴으로변경한다. Ÿ setlinedash() 에서 segments 인자의사용방법은다음그림과같다. - 9 -

예제점선그리기 <!DOCTYPE html><html><head> function LineDash() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); // 사각형그리기 context.setlinedash([5,2]); context.rect(30,15,100,100); // 삼각형그리기 context.setlinedash([1,2]); context.moveto(145,115); context.lineto(195,15); context.lineto(245,115); context.closepath(); // 다각형그리기 context.fillstyle = 'lightblue'; context.setlinedash([15]); context.moveto(260,115); context.lineto(275,95); context.lineto(305,15); context.lineto(345,65); context.lineto(345,115); context.closepath(); - 10 -

context.fill(); </head> <body onload="linedash();"> <canvas id="mycanvas" width="400" height="150" style="border: 10px inset #aaa"> 캔버스에점선그리기연습 </canvas> </body> </html> 3.6 선스타일지정 Ÿ 선의색상을지정하고자할때는 strokestyle 속성을사용한다. context.strokestyle [=value] Ÿ 선의두께를지정할때는 linewidth 속성을사용한다. context.linewidth [=value] Ÿ 선의연결부분의스타일지정할때는 linejoin 속성을사용한다. context.linejoin [= bevel round miter( 기본 ) ] Ÿ 선의끝부분의스타일을지정할때는 linecap 속성을사용한다. context.linecap [= butt( 기본 ) round square ] 예제선스타일지정 <!DOCTYPE html><html><head> function LineJoin() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); var linestart = 50, lineend = 200, ystart = 50; context.linewidth = "25"; // bevel corner. - 11 -

context.strokestyle = "Red"; context.linejoin = "bevel"; // 선의연결부분스타일을지정. context.moveto(linestart, ystart); context.lineto(lineend, ystart); context.lineto(lineend, ystart + 150); // round corner. context.strokestyle = "blue"; context.linejoin = "round"; // 선의연결부분스타일지정 context.moveto(linestart + 200, ystart); context.lineto(lineend + 200, ystart); context.lineto(lineend + 200, ystart + 150); // miter. context.strokestyle = "green"; context.linejoin = "miter"; // 선의연결부분스타일을지정 context.moveto(linestart + 400, ystart); context.lineto(lineend + 400, ystart); context.lineto(lineend + 400, ystart + 150); </head> <body onload="linejoin();"> <canvas id="mycanvas" width="650" height="250" style="border: 10px inset #aaa"> 캔버스연습하기 </canvas> </body> </html> Ÿ 선의연결부분의스타일이 miter인경우 miter 길이의비율을지정하고자할때는 miterlimit 속성을사용한다. 선의 miter 연결부분의한계비율 = (miter 길이 ) / ( 선두께의 1/2 크기 ) context.miterlimit [= value] - 12 -

예제 miterlimit 속성 <!DOCTYPE html><html><head></head> <body><canvas id="mycanvas" width="200" height="200" style="border: 10px inset #aaa"> 캔버스연습하기 </canvas> var canvas = document.getelementbyid('mycanvas'); var context = canvas.getcontext('2d'); // 첫번째연결선을그린다. context.linewidth = 20; context.miterlimit = 3.0; context.strokestyle = "lightblue"; context.moveto(30, 140); context.lineto(50, 80); context.lineto(70, 140); // 보조선을선중간에그린다 context.linewidth = 1; context.strokestyle = "red"; context.moveto(30, 140); context.lineto(50, 80); context.lineto(70, 140); // 두번째연결선을그린다. context.linewidth = 20; context.miterlimit = 10.0; context.strokestyle = "lightblue"; context.moveto(130, 140); context.lineto(150, 80); context.lineto(170, 140); // 보조선을선중간에그린다 context.linewidth = 1; context.strokestyle = "red"; context.moveto(130, 140); context.lineto(150, 80); context.lineto(170, 140); - 13 -

</body> </html> - 14 -