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

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

쉽게 풀어쓴 C 프로그래밍

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

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

PowerPoint 프레젠테이션

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

HTML5-³¹Àå¿ë.PDF

PowerPoint Presentation

HTML5

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

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

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

e-비즈니스 전략 수립

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

PowerPoint Presentation

HTML5

Lab10

쉽게 풀어쓴 C 프로그래밍

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

PowerPoint 프레젠테이션

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

슬라이드 1

Javascript.pages

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

<4D F736F F F696E74202D204347C3E2BCAEBCF6BEF D325FC4C4C7BBC5CDB1D7B7A1C7C8BDBA20B1E2BABBBFE4BCD22E >

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Java7.pptx

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 05geometry.ppt

JU-TF43

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

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

스무살, 마음껏날아오르기위해, 일년만꾹참자! 2014학년도대학수학능력시험 9월모의평가 18번두이차정사각행렬 가 를만족시킬때, 옳은것만을 < 보기 > 에서있는대로고른것은? ( 단, 는단위행렬이다.) [4점] < 보기 > ㄱ. ㄴ. ㄷ. 2013학년도대학수학능력시험 16번

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

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

PowerPoint 프레젠테이션

Building Mobile AR Web Applications in HTML5 - Google IO 2012

8장.그래픽 프로그래밍

제8장 자바 GUI 프로그래밍 II

<!DOCTYPE html> <html> <head> #p1{background:#ff0000;} 1 배경색을 16진수지정방식사용 #p2{background:rgb(255,0,0);} 2 배경색을 rgb 지정방식사용 #p3{background:rgba(255,0,0,0

HTML5

일반각과호도법 l 삼각함수와미분 1. 일반각 시초선 OX 로부터원점 O 를중심으로 만큼회전이동한위치에동경 OP 가있을때, XOP 의크기를나타내는각들을 ( 은정수 ) 로나타내고 OP 의일반각이라한다. 2. 라디안 rad 반지름과같은길이의호에대한중심각의 크기를 라디안이라한

Week8-Extra

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

ACTIONSCRIPT™ 3.0 프로그래밍

Week3

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

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

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

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

Overall Process

기초제도14강

1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

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

PowerPoint Template

Syrup Store O2O Marketing Platform/Solution

Microsoft PowerPoint - ch02-1.ppt

쉽게 풀어쓴 C 프로그래밍

HTML5 인터넷보충학습자료 (2014) 14 강. HTML API [1] : 오프라인웹, 파일접근, 웹스토리지 14 강. HTML API [1] : 오프라인웹, 파일접근, 웹스토리지 1. 오프라인웹 1.1 오프라인웹애플리케이션 Ÿ 오프라인상태에서도사용이가능한애플리케이

PowerPoint 프레젠테이션

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

2020 학년도랑데뷰실전모의고사문제지 - 시즌 3 제 1 회 제 2 교시 수학영역 ( 나형 ) 1 5 지선다형 3. 그림은함수 를나타낸것이다 학년도 9월모의평가나형과싱크로율 99% 학년도수학영역대비랑데뷰실전모의고사가형-시즌1~ 시즌6, 나형-시즌

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

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

Visual Basic 반복문

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

Microsoft PowerPoint Predicates and Quantifiers.ppt

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

PowerPoint 프레젠테이션


쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

; 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

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

Javascript

Javascript

하둡을이용한파일분산시스템 보안관리체제구현

쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로

SproutCore에 홀딱 반했습니다.

PowerPoint 프레젠테이션

Microsoft PowerPoint - LA_ch6_1 [호환 모드]

PowerPoint Presentation

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

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

HTML5

LaTeX입문 - Day 2

윈도우즈프로그래밍(1)

슬라이드 1

<A1DAA1DAA1DA20C6DBC5AC20BCF6C7D020BFCFB7E E687770>

문항코드 EBS 수능완성수학영역수학 1 A 형 주어진그래프의꼭짓점에 를그림과같이 정하고꼭짓점사이의연결관계를행렬로나타내면다 음과같다. ( 나 ) 세수, 12, 는이순서대로등비수열을이룬다. 의값은? 문

위하다. 하지만 지금까지 시민사회의 논의는 주로 국내 핵발전소의 안전과 이에 따른 재난으로 논의가 국한되고 있는 측면이 있다. 사고의 파급력과 파괴력은 국내 핵발전소 사고가 더 크겠지 만, 그간 역사를 통해 우리가 경험한 방사능 재난은 이보다 다양하며, 오늘의 논의 과

Prototype에서 jQuery로 옮겨타기

Java ...

Transcription:

1. 원그리기 1.1 원 / 원호그리기 - arc() 메서드 Ÿ arc() 메서드에서는시작좌표 (x, y), 반지름 (radius), 시작각도 (startangle), 종료각도 (endangle), 그리는방향 (anticlockwise) 을지정해야한다. Ÿ 시작각도와종료각도는브라우저에서원주를따라그려지는호에대한각도로라디안을사용한다. 따라서각도에 Math.PI/180을곱해서사용한다. 시계방향으로그리기위해서는 false값을지정하고시계반대방향으로그리기위해서는 true값을지정해야한다. 1.2 부채꼴그리기 Ÿ arc() 메서드를 moveto() 메서드와함께사용하면부채꼴을만들수있다. moveto() 메서드로시작지점을지정하고, arc() 메서드로호를그린후에 closepath() 메서드로패스를닫으면, 자동으로시작지점과호의양끝점이연결되어부채꼴의모양이완성된다. - 1 -

예제 <!DOCTYPE html><html><head> <script type="text/javascript"> function arcto() { var canvas = document.getelementbyid('canvas'); context = canvas.getcontext('2d'); context.moveto(150, 150); context.arc(150, 150, 100, 0, 90*Math.PI/180, true); context.closepath(); context.stroke(); context.moveto(160, 160); context.arc(160, 160, 100, 0, 90*Math.PI/180, false); context.closepath(); context.fill(); <body onload="arcto();"> <canvas id="canvas" width="300" height="300" style="border:solid 1px #000000"> canvas 사용하기 </canvas> </body> </html> 1.3 직선과접하는원호그리기 arcto() 메서드 Ÿ 직선과접하는원호를그리기위해서는 moveto() 메서드와 arcto( (x1, y1, x2, y2, 반지름 ) 메서드를사용한다. - 2 -

예제 - 모서리가둥근사각형그리기 <!DOCTYPE html><html lang="kor"> <head> <title> 캔버스모서리가둥근사각형연습 </title> <script> function roundrect(context, x, y, width, height, radius) { if(width < 1) return; context.moveto(x + radius, y); context.arcto((x+width), y, (x+width), (y+height), radius); context.arcto((x+width), (y+height), x, (y+height), radius); context.arcto(x, (y+height), x, y, radius); context.arcto(x, y, (x+radius), y, radius); context.stroke(); function draw() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); roundrect(context, 50, 50, 100, 100, 10); roundrect(context, 200, 50, 100, 100, 20); roundrect(context, 350, 50, 100, 100, 30); roundrect(context, 500, 50, 100, 100, 40); <body onload="draw();"> <canvas id="mycanvas" width="650" height="200" style="border: 10px inset #aaa"> 캔버스연습 </canvas> </body> </html> - 3 -

2 베지에곡선 2.1 베지에곡선 Ÿ 베지에곡선 (bezier curve) 은 n 개의점으로부터얻어지는 (n-1) 차곡선을의미한다. 2.2 베지에곡선 Ÿ 2차곡선과 3차 ( 다항 ) 곡선으로이루어져있다. 2차베지에곡선은 2개의기준점 ( 시작점과종료점 ) 과한개의제어점을필요로한다. 시작점은 moveto() 메서드를사용하여지정한다. Ÿ quadraticcurveto( 제어점x, 제어점y, 종료점x, 종료점y) 2.3 3 차원베지에곡선 Ÿ 2개의기준점 ( 시작점, 종료점 ) 과 2개의제어점으로정의된다. 4개의점에서중간점 3 개를구하고, 중간점 3개에서중간점을 2개를다시구한다. 마지막으로중간점 2개에서마지막중간점을구하는식이다. Ÿ beziercurveto( 제어점x1, 제어점y1, 제어점x2, 제어점y2, 종료점x, 종료점y) - 4 -

예제 2차베지에곡선 <!DOCTYPE html><html lang="kor"><head> <title> 캔버스 - 투명도연습 </title> <script> function draw() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); context.linewidth = 5.0; context.strokestyle = "red" context.moveto(175, 25); // 시작점을중앙상단으로옮긴다 context.quadraticcurveto(325, 25, 325, 100); context.quadraticcurveto(325, 175, 175, 175); context.quadraticcurveto(25, 175, 25, 100); context.quadraticcurveto(25, 25, 175, 25); context.stroke(); <body onload="draw();"> <canvas id="mycanvas" width="350" height="200" style="border: 10px inset #aaa"> 캔버스연습 </canvas> </body> </html> 3. 스타일지정 3.1 채우기스타일지정 3.1.1 fillstyle 속성 Ÿ 선을그릴때는 stroke() 메서드를사용하고색상을지정할때는 strokestyle 속성을사용한다. 색으로채워져있는도형을그릴때는 fill() 메서드를사용하고채우기색을지 - 5 -

정할때는 fillstyle 속성을사용한다. 예제 <!DOCTYPE html><html> <head> <script type="text/javascript"> function arcto() { context.strokestyle = "blue"; context.strokerect(30, 30, 150, 150); context.fillstyle = "red"; context.fillrect(30, 30, 150, 150); context.fillstyle = "red"; context.fillrect(330, 30, 150, 150); context.strokestyle = "blue"; context.strokerect(330,30, 150, 150); <body onload="arcto();"> <canvas id="canvas" width="650" height="400" style="border:solid 1px #000000"> canvas 사용하기 </canvas> </body> </html> 3.1.2 globalalpha 속성 Ÿ 채우기스타일을이용할때도형을채울때투명도를지정할수있다. 투명도는 0~1.0 사이의값을지정한다. 3.2 와인딩규칙 Ÿ 패스를그릴때마다브라우저는캔버스에있는지점이곡선내부에있는지의여부를결정해야한다. 패스가교차하거나중첩되어있는경우에는명확하지않기때문이다. 캔버스에서는현재패스의내부를칠하는방법에따라서다르게동작한다. Ÿ 패스내부에있는점과외부에있는점을판별하는방법으로넌제로와인딩규칙과짝 -홀와인딩규칙이있다. Ÿ 짝-홀와인딩 (even-odd winding) 은선을통과할때마다교차횟수를누적한다. 누적된교차횟수가짝수라면패스외부라고판단하고채우지않는다. 그러나교차횟수가홀수이면패스내부라고판단하고지정한스타일로채우게된다. Ÿ 넌제로와인딩 (non-zero winding) 은가장일반적으로사용되는방법으로패스의각부분에대한드로잉을하는방향에의존하는방법이다. 어떤한지점이곡선내부에있 - 6 -

는지를확인하려면, 해당지점을통해서가상의선을그린다. 그런다음그지점에도달할때까지곡선을교차하는횟수를계산한다. 모든시계방향회전의경우에는 1씩감소시키고, 모든시계반대방향회전의경우에는 1씩증가시킨다. 마지막계산된카운터가 0이아니면해당영역은패스안에존재한다고판단하여해당영역의내부를채우고, 마지막카운터가 0이라면해당영역은패스밖에존재한다고판단한다. 3.2.1 polygon() 알고리즘의개선 _ 와인딩규칙적용 - 7 -

3.2.2 msfillrule 속성 Ÿ IE 11 이상에서와인딩방식지정가능하다. 3.3 그라데이션스타일지정 Ÿ 그라데이션지정형식 Ÿ createlineargradient() 메서드또는 createradialgradient() 메서드를사용하여그라데이션을지정을위한객체를생성한후에는그라데이션에따라색상을어떻게배분하는지를정의하는 addcolorstop() 메서드를사용하여두좌표간또는두가상의원사이의변환점색상을지정해야한다. addcolorstop( 오프셋, 색상 ) 3.3.1 선형그라데이션 Ÿ 선형그라데이션을지정하기위해서는 createlineargradient() 메서드에시작좌표 (x0, y0) 와종료좌표 (x1, y1) 를지정함으로써, 시작좌표와종료좌표간의위치에따라서색상변화가있는그라데이션효과를만들어낼수있다. createlineargradient( x1, y1, x2, y2 ) 예제 <!DOCTYPE html><html><head> <script> function draw() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); - 8 -

var gradient = context.createlineargradient(0, 0, 150, 150); gradient.addcolorstop(0, 'blue'); gradient.addcolorstop(0.5, 'yellow'); gradient.addcolorstop(1, 'red'); context.fillstyle = gradient; context.fillrect(0, 0, 150,150); <body onload="draw();"> <canvas id="mycanvas" width="660" height="240" style="border: 10px inset #aaa"> 캔버스연습 </canvas> </body></html> 3.3.2 방사형그라데이션 Ÿ 방사형그라데이션을지정하기위해서는 createradialgradient() 메서드에원의중심좌표 (x0, y0), 원의반지름 (r0), 또다른원의중심좌표 (x1, y1), 또다른원의반지름 (r1) 을지정함으로써, 두개의가상원이생성되고그두개의가상의원사이의위치에따라서색상변화가있는그라데이션으로효과를만들어낸다. createradialgradient( x1, y1, r1, x2, y2, r2 ) 예제 <!DOCTYPE html><html><head> <script> function draw() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); // 방사형그라데이션객체를만든다. var gradient = context.createradialgradient( 100, 100, 10, 100, 100, 90 ); gradient.addcolorstop(0, "yellow"); gradient.addcolorstop(1, "blue"); context.fillstyle = gradient; context.arc(100, 100, 90, 0, 360*Math.PI/180, true); context.fill(); <body onload="draw();"> <canvas id="mycanvas" width="620" height="210" style="border: 10px inset #aaa"> 캔버스연습 </canvas> </body></html> - 9 -

3.4 패턴스타일지정 Ÿ 패턴은불투명한 CanvasPattern 인터페이스를구현하는객체로표현되며색상및그라데이션과함께패턴으로도형과텍스트를그리고내부를채울수있다. 패턴객체는 createpattern() 메서드를통해서만들수있다. context.createpattern( 이미지, 반복형식 ) 예제 <!DOCTYPE html><html><head> <script type="text/javascript"> function arcto() { var canvas = document.getelementbyid("mycanvas"); var context = canvas.getcontext("2d"); var img = new Image(); // 이미지객체를만든다. img.src = "pattern.png"; // 이미지객체에이미지를지정한다. img.onload = function () { context.beginpath (); var pattern = context. createpattern (img, ""); // 이미지로패턴객체생성. context.fillstyle = pattern; // 패턴객체를채우기스타일로지정 context.arc(100, 100, 70, 0, 2 * Math.PI, false); // 원을그린다. context.fill (); // 원내부를채운다. context.strokestyle=pattern; context.linewidth = 20; context.strokerect( 10, 10, 180, 180); <body onload="arcto();"> <canvas id="mycanvas" width="200" height="200" >canvas 사용하기 </canvas> </body> </html> 3.5 그림자스타일지정 Ÿ 어떤도형이나텍스트, 또는이미지등에입체감을주기위해서는그림자를지정해야한다. 그림자를지정하면, 도형이나텍스트등이캔버스위에마치떠있는느낌이들도록시각적효과를주기때문에이용되는기능이다. - 10 -

예제 그림자스타일지정 <!DOCTYPE html><html><head> <script type="text/javascript"> function shadow() { var canvas = document.getelementbyid('canvas'); context = canvas.getcontext('2d'); context.fillstyle = 'rgba(10, 200, 100, 0.8)'; context.shadowoffsetx = -5; context.shadowoffsety = -10; context.shadowcolor = 'red'; context.shadowblur = 5; context.fillrect(50,50,100,250); context.shadowoffsetx = 10; context.shadowoffsety = 40; context.shadowcolor = 'blue'; context.shadowblur = 10; context.fillrect(250,50,100,250); context.shadowoffsetx = 40; context.shadowoffsety = 10; context.shadowcolor = 'green'; context.shadowblur = 30; context.fillrect(450,50,100,250); <body onload="shadow();"> <canvas id="canvas" width="700" height="400" style="border:solid 1px #000000"> - 11 -

canvas 사용하기 </canvas> </body> </html> - 12 -