CanvasRenderingContext2D.addGrid (delta, color, font)
CanvasRenderingContext2D.addTransGrid (a, b, c, d, e, f, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addScaledGrid = function (x, y, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addRotatedGrid (angle, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addTranslatedGrid (x, y, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addShearedGrid (x, y, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addStandardGrid (x, y, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addRotateAboutGrid (angle, x, y, delta, gridColor, frameColor, font)
composeTransform ([a1,b1,c1,d1,e1,f1], [a2,b2,c2,d2,e2,f2])
allCanvasDrawings()
--- begin of the functionallCanvasDrawings()
--- begin of the functionVeryFirstExampleCanvas
Tricolour
ContextAccessTemplate1
DomOverview
GridExplained1
GridExplained2
GridExplained3
GridExplained4
GermanFlag
SizeReadingSample
SizeChangingSample
DataUrlSample
ReferenceSample1
StateSample
ScalingGrid01
RotationGrid01
TranslatingGrid01
ScalingGrid11
ScalingGrid12
ScalingGrid21
ScalingGrid22
ScalingSample1
YMirror1
YMirror2
XMirror1
RotationGrid1
RotationGrid23
RotationGrid2
RotationGrid3
RotationSample1
TranslationGrid2
TranslationGrid3
TranslationGrid4
TranslationGrid5
TranslationSample1
TransformGrid0
TransformGrid1
TransformationSample1
ShearTransform1
ShearTransform2
ShearTransform3
RotatedHallo1
TurnLeftGrid1
TurnLeftGrid2
TurnLeftGrid3
TurnLeftGrid4
RotatedHallo2
RotatedHallo3
RotatedHalloImage1
ImageSample123
ScalingImage2
ScalingImage3
RotatedHalloImage1Again
RotatedHalloImage2
GlobalAlphaSample1
GlobalAlphaSample2
GlobalAlphaSample3
GlobalCompositeSample
SourceOverSample
SourceAtopSample
SourceInSample
SourceOutSample
DestinationOverSample
DestinationAtopSample
DestinationInSample
DestinationOutSample
LighterSample
CopySample
XorSample
StrokeStyleSample1
FillStyleSample1
Rainbow1
Rainbow2
Rainbow3
RainbowStrokeStyleSample1
RadialSample
RadialSample1
RadialSample2
RadialSample3
RadialSample4
RadialSample8
RadialSample9
RadialSample7
RadialGradient1
RadialGradient2
RadialGradient3
RadialGradient4
RadialGradientCircles1
RadialGradientCircles2
RadialGradientCircles3
RadialGradientCircles4
CreatePatternSample1
LineWidthSample1
LineWidthCanvas1
LineWidthCanvas2
LineCapSample1
LineJoinRound
LineJoinBevel
LineJoinMiter
MiterLimitCanvas1
ShadowSample0
ShadowOffsetXSample
ShadowOffsetYSample
ShadowBlurSample1
ShadowBlurSample2
ShadowColorSample
FillRectSample
StrokeRectSample
ClearRectSample
DrawRectangle1
DrawRectangle3
DrawRectangle4
ClosePathSample1
ClosePathSample2
ClosePathSample3
StrokeSample1
StrokeSample2
FillSample1
NonConvexShape0
NonConvexShape1
NonConvexShape2
NonConvexShape3
LineToSample1
LineToSample2
MoveToSample1
MoveToSample2
RectSample1
RectSample2
QuadraticCurveSample0
QuadraticCurveSample1
QuadraticCurveSample2
QuadraticCurveShape0
QuadraticCurveShape1
QuadraticCurveShape2
QuadraticCurveShape3
EllipseWithQuadraticCurve
EllipseWithBezierCurve
BezierSample1
BezierSample2
BezierSample3
BezierSample1again
BezierSample4
BezierSample5
BezierSample6
BezierHart0
BezierHart1
BezierHart2
BezierHart3
BezierHart4
BezierHart5
BezierHart6
BezierHart7
ArcSample1
ArcSample2
ArcSample3
ArcExplained1
ArcExplained2
ArcExplained3
ArcExplained4
ArcExplained4filled
ArcExplained4stroke
ArcExplained5filled
ArcExplained5stroke
ArcExplained6deg
ArcExplained6pi
ArcExplained7
ArcWithInitLine
ArcSample2again
ArcSample1singlePath
ArcSample00singlePath
ArcSample01singlePath
ArcSample02singlePath
ArcToSample0
ArcToSample0points
ArcToSample0lines
ArcToSample0explained
ArcToSample0Radius50
ArcToSample0Radius20
ArcToSample0Radius150
ArcToSample0Radius250
ClipSample1a
ClipSample1b
ClipSample1
ClipSample2
ClipSample3
IsPointInPathSample1
TextSample0
TextAlignLeftSample
TextAlignRightSample
TextAlignCenterSample
TextBaselineSample
FillTextSample
StrokeTextSample
TextSampleMeasureText
DrawImageSample1
DrawImageSample2
DrawImageSample3
DrawImageSample3image
DrawImageSample3canvas
ImageDataSample
ImageDataSampleAgain
GetImageDataSample1a
GetImageDataSample1b
GetImageDataSample1c
GetImageDataSample2
AddGridSample1
AddGridSample2
AddGridSample3
allCanvasDrawings()
--- end of the functionallCanvasDrawings
is called when the document is loadedCanvasRenderingContext2D.addGrid (delta, color, font)
CanvasRenderingContext2D.prototype.addGrid = function (delta, color, font) { // define the default values for the optional arguments if (! arguments[0]) { delta = 25; } if (! arguments[1]) { color = 'blue'; } if (! arguments[2]) { font = '8px sans-serif'; } // extend the canvas width and height by delta var oldWidth = this.canvas.width; var oldHeight = this.canvas.height; this.canvas.width = oldWidth + delta; this.canvas.height = oldHeight + delta; // draw the vertical and horizontal lines this.lineWidth = 0.1; this.strokeStyle = color; this.beginPath(); for (var i = 0; i * delta < oldWidth; i ++) { this.moveTo (i * delta, 0); this.lineTo (i * delta, oldHeight); } for (var j = 0; j * delta < oldHeight; j ++) { this.moveTo (0, j * delta); this.lineTo (oldWidth, j * delta); } this.closePath(); this.stroke(); // draw a thicker line, which is the border of the original canvas this.lineWidth = 0.5; this.beginPath(); this.moveTo(0,0); this.lineTo(oldWidth,0); this.lineTo(oldWidth,oldHeight); this.lineTo(0,oldHeight); this.lineTo(0,0); this.closePath(); this.stroke(); // set the text parameters and write the number values to the vertical and horizontal lines this.font = font; this.lineWidth = 0.3; // 1. writing the numbers to the x axis var textY = oldHeight + Math.floor(delta/2); // y-coordinate for the number strings for (var i = 0; i * delta <= oldWidth; i ++) { this.strokeText (i * delta, i * delta, textY); } // 2. writing the numbers to the y axis var textX = oldWidth + 5; // x-coordinate for the number strings for (var j = 0; j * delta <= oldHeight; j ++) { this.strokeText (j * delta, textX, j * delta); } };
CanvasRenderingContext2D.addTransGrid (a, b, c, d, e, f, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addTransGrid = function (a, b, c, d, e, f, delta, gridColor, frameColor, font) { // define the default values for the optional arguments if (typeof arguments[6] === "undefined") { delta = 25; } if (typeof arguments[7] === "undefined") { gridColor = 'blue'; } if (typeof arguments[8] === "undefined") { frameColor = 'red'; } if (typeof arguments[9] === "undefined") { font = '8px sans-serif'; } // local function, where trans([x0,y0])===[x,y] is new coordinate point for the given point [x0,y0] var trans = function (point) { var x = point[0]; var y = point[1]; return [(a*x)+(c*y)+e, (b*x)+(d*y)+f]; } // original (old) canvas width and height var w = this.canvas.width; var h = this.canvas.height; // compute the new four corner points of the old canvas border var lup = trans ([0, 0]); // left upper point var llp = trans ([0, h]); // left lower point var rup = trans ([w, 0]); // right upper point var rlp = trans ([w, h]); // right lower point // compute the lowest and highest x and y values of both the old and the new canvas border var minX = Math.min (lup[0], llp[0], rup[0], rlp[0], 0); // is negative or zero var maxX = Math.max (lup[0], llp[0], rup[0], rlp[0], w); // is positive, at least w var minY = Math.min (lup[1], llp[1], rup[1], rlp[1], 0); // is negative or zero var maxY = Math.max (lup[1], llp[1], rup[1], rlp[1], h); // is positve, at least h // compute the offset for the x and y axis var xOff = (minX < 0 ? -minX : 0) + delta; // is positive var yOff = (minY < 0 ? -minY : 0) + delta; // is positive // resize the canvas new_w = xOff + maxX + delta; new_h = yOff + maxY + delta; this.canvas.width = new_w; this.canvas.height = new_h; // offTrans([x,y]) returns the transformed point [x',y'] that takes care of the offset function offTrans (p) { var newP = trans(p) return ([xOff + newP[0], yOff + newP[1]]); }; // draw the frame, i.e. the border of the original canvas this.strokeStyle = frameColor; this.lineWidth = 3.0; this.lineJoin = 'miter'; this.lineCap = 'round'; this.strokeRect (xOff, yOff, w, h); // draw the new grid this.strokeStyle = gridColor; this.lineWidth = 1.0; this.beginPath(); for (var i = 0; i*delta <=w; i++) { var p = offTrans ([i*delta, 0]); var q = offTrans ([i*delta, h]); this.moveTo (p[0], p[1]); this.lineTo (q[0], q[1]); } for (var j = 0; j * delta <= h; j++) { var p = offTrans ([0, j*delta]); var q = offTrans ([w, j*delta]); this.moveTo (p[0], p[1]); this.lineTo (q[0], q[1]); } this.stroke(); // draw the two arrows for the new grid this.strokeStyle = gridColor; this.lineWidth = 3.0; this.lineJoin = 'miter'; this.lineCap = 'round'; var arrSize = 5; // size of the arrow head this.beginPath(); // x-arrow this.moveTo (offTrans([0,0])[0], offTrans([0,0])[1]); this.lineTo (offTrans([w,0])[0], offTrans([w,0])[1]); this.moveTo (offTrans([w-arrSize,-arrSize])[0], offTrans ([w-arrSize,-arrSize])[1]); this.lineTo (offTrans([w,0])[0], offTrans([w,0])[1]); this.moveTo (offTrans([w-arrSize,arrSize])[0], offTrans ([w-arrSize,arrSize])[1]); this.lineTo (offTrans([w,0])[0], offTrans([w,0])[1]); // y-arrow this.moveTo (offTrans([0,0])[0], offTrans([0,0])[1]); this.lineTo (offTrans([0,h])[0], offTrans([0,h])[1]); this.moveTo (offTrans([-arrSize,h-arrSize])[0], offTrans([-arrSize,h-arrSize])[1]); this.lineTo (offTrans([0,h])[0], offTrans([0,h])[1]); this.moveTo (offTrans([arrSize,h-arrSize])[0], offTrans([arrSize,h-arrSize])[1]); this.lineTo (offTrans([0,h])[0], offTrans([0,h])[1]); this.stroke(); // write the text; first the numbers of the x-axis this.textBaseline = 'middle'; this.textAlign = 'center'; this.fillStyle = gridColor; var halfDelta = - Math.floor (delta / 2); // y-coordinate for the number strings for (var i = 0; i * delta <= w; i++) { this.fillText (i*delta, offTrans ([i*delta, halfDelta])[0], offTrans ([i*delta, halfDelta])[1]); } for (var j = 0; j * delta <= h; j++) { this.fillText (j*delta, offTrans ([halfDelta, j*delta])[0], offTrans ([halfDelta, j*delta])[1]); } // write `x` and `y` this.fillText ('x', offTrans ([w-halfDelta, 0])[0], offTrans ([w-halfDelta,0])[1]); this.fillText ('y', offTrans ([0, h-halfDelta])[0], offTrans ([0, h-halfDelta])[1]); }
CanvasRenderingContext2D.prototype.addScaledGrid = function (x, y, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addScaledGrid = function (x, y, delta, gridColor, frameColor, font) { this.addTransGrid (x, 0, 0, y, 0, 0, delta, gridColor, frameColor, font); };
CanvasRenderingContext2D.prototype.addRotatedGrid (angle, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addRotatedGrid = function (angle, delta, gridColor, frameColor, font) { var c = Math.cos(angle); var s = Math.sin(angle); this.addTransGrid (c, s, -s, c, 0, 0, delta, gridColor, frameColor, font); };
CanvasRenderingContext2D.prototype.addTranslatedGrid (x, y, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addTranslatedGrid = function (x, y, delta, gridColor, frameColor, font) { this.addTransGrid (1, 0, 0, 1, x, y, delta, gridColor, frameColor, font); };
CanvasRenderingContext2D.prototype.addShearedGrid (x, y, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addShearedGrid = function (x, y, delta, gridColor, frameColor, font) { this.addTransGrid (1, y, x, 1, 0, 0, delta, gridColor, frameColor, font); };
CanvasRenderingContext2D.prototype.addStandardGrid (x, y, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addStandardGrid = function (delta, gridColor, frameColor, font) { this.addTransGrid (1, 0, 0, 1, 0, 0, delta, gridColor, frameColor, font); };
CanvasRenderingContext2D.prototype.addRotateAboutGrid (angle, x, y, delta, gridColor, frameColor, font)
CanvasRenderingContext2D.prototype.addRotateAboutGrid = function (angle, x, y, delta, gridColor, frameColor, font) { var c = Math.cos(angle); var s = Math.sin(angle); this.addTransGrid (c, -s, s, c, -x*c-y*s+x, x*s-y*c+y, delta, gridColor, frameColor, font); };
composeTransform ([a1,b1,c1,d1,e1,f1], [a2,b2,c2,d2,e2,f2])
takes the two transformation parameter sixtuples and returns the composed sixtuple [a3,b3,c3,d3,e3,f3]
.
function composeTransform (arr1, arr2) { if (Array.isArray (arr1) && Array.isArray (arr2)) { if (arr1.length === 6 && arr2.length === 6) { // components of arr1 var a1 = arr1[0]; var b1 = arr1[1]; var c1 = arr1[2]; var d1 = arr1[3]; var e1 = arr1[4]; var f1 = arr1[5]; // components of arr2 var a2 = arr2[0]; var b2 = arr2[1]; var c2 = arr2[2]; var d2 = arr2[3]; var e2 = arr2[4]; var f2 = arr2[5]; // components of the resulting array var a3 = (a2 * a1) + (c2 * b1); var b3 = (b2 * a1) + (d2 * b1); var c3 = (a2 * c1) + (c2 * d1); var d3 = (b2 * c1) + (d2 * d1); var e3 = (a2 * e1) + (c2 * f1) + e2; var f3 = (b2 * e1) + (d2 * f1) + f2; return [a3, b3, c3, d3, e3, f3]; } else { throw Error ("The two array arguments of composeTransform(arr1,arr2) must both have six components each."); } } else { throw Error ("The two arguments of composeTransform(arr1,arr2) must both be arrays."); } };
canvasIdList()
returns the list of id
values of all the <canvas>
elements in the text. A call of canvasIdList()
from the Firebug console returns
["VeryFirstExampleCanvas", "LittleTricolour", null, null, "ContextAccessTemplate1", "GridExplained1", ...]
The null
entries come from the <canvas>
tags without id
attribute.
function canvasIdList () { var canvasList = document.getElementsByTagName('canvas'); // now an array of HTMLCanvasElement objects var idList = []; for (var i = 0; i < canvasList.length; i++) { idList.push (canvasList[i].getAttribute('id')); } return idList; };
allCanvasDrawings()
--- begin of the functionThe remainder of this file contains the scripts for the <canvas>
elements in the main document file CanvasHandbook.html and CanvasHandbook.markdown, respectively. All these scripts are simply concatenated and wrapped in a function addCanvasDrawings()
.
This function is then called when the document has loaded, i.e. it is registered as the event listener
window.onload = allCanvasDrawings;
as described in the "Third template" of the appendix on file templates.
function allCanvasDrawings () {
allCanvasDrawings()
--- begin of the functionVeryFirstExampleCanvas
var canvas = document.getElementById ('VeryFirstExampleCanvas'); // access the canvas object var context = canvas.getContext ('2d'); // access the canvas context context.fillStyle = 'red'; // set the color to 'red' context.fillRect (0,0,150,60); // draw a red box on the whole of the canvas context.fillStyle = 'yellow'; // set the color to 'yellow' context.fillRect (5,5,140,50); // draw a yellow box inside the red on context.fillStyle = 'red'; // set the color back to 'red' context.font = '40pt Arial'; // define the CSS font for writing text context.fillText ('Hello',10,50); // write the text 'Hello'
Tricolour
// First, get hold of the canvas object and its context var tricolourCanvas = document.getElementById('LittleTricolour'); var tricolourCanvasContext = tricolourCanvas.getContext('2d'); // Now do the real drawings: tricolourCanvasContext.fillStyle = '#0055A4'; // set the color to blue tricolourCanvasContext.fillRect ( 0, 0, 40, 90); // draw a blue rectangle on the left tricolourCanvasContext.fillStyle = '#FFFFFF'; // set the color to white tricolourCanvasContext.fillRect (40, 0, 40, 90); // draw a white rectangle in the middle tricolourCanvasContext.fillStyle = '#EF4135'; // set the color to red tricolourCanvasContext.fillRect (80, 0, 40, 90); // draw a red rectangle on the right
ContextAccessTemplate1
var canvas = document.getElementById('ContextAccessTemplate1'); canvas.width = 800; canvas.height = 280; var context = canvas.getContext('2d'); //context.addGrid(); // the boxes context.strokeStyle = 'black'; context.strokeRect (10, 50, 175, 125); context.strokeRect (475, 50, 300, 225); context.fillStyle = '#EEEEEE'; context.fillRect (490,85,150,50) context.fillRect (510,200,225,50); // the arrows context.strokeStyle = 'green'; context.beginPath(); context.moveTo (177,100); context.lineTo (485,100); context.moveTo (480,95); context.lineTo (485,100); context.lineTo (480,105); context.moveTo (520,115); context.lineTo (520,195); context.moveTo (515,190); context.lineTo (520,195); context.lineTo (525,190); context.stroke(); // the text context.textBaseline = 'middle'; context.fillStyle = 'black'; context.font = '18pt Arial'; context.fillText ('HTML (and CSS)',10,25); context.fillText ('DOM / JavaScript', 530,25); context.fillStyle = 'blue'; context.font = '10pt monospace'; context.fillText ('...',25,75); context.fillText ('<canvas id="myCan">', 25,100); context.fillText ('</canvas">', 25,125); context.fillText ('...',25,150); context.fillText ('HTMLCanvasElement', 500,100); context.fillText ('CanvasRenderingContext2D',520,215); context.fillText ("document.getElementById('myCan')",205,87); context.fillText ("getContext('2d')",530,167);
DomOverview
var context = document.getElementById('DomOverview').getContext('2d'); //context.addGrid(); // the flow diagram context.strokeStyle = 'black'; context.strokeRect (25, 50, 225, 325); // the HTML box context.strokeRect (500, 50, 225, 325); // the DOM box context.beginPath(); // the tree structure context.moveTo(525,85); context.lineTo(525,175); context.lineTo(540,175); context.moveTo(525,100); context.lineTo(540,100); context.moveTo(550,110); context.lineTo(550,150); context.moveTo(550,125); context.lineTo(565,125); context.moveTo(550,150); context.lineTo(565,150); context.moveTo(550,185); context.lineTo(550,300); context.lineTo(565,300); context.moveTo(550,200); context.lineTo(565,200); context.moveTo(550,225); context.lineTo(565,225); context.moveTo(550,250); context.lineTo(565,250); context.moveTo(550,275); context.lineTo(565,275); context.stroke(); // the text context.textBaseline = 'middle'; context.fillStyle = 'black'; context.font = '18pt Arial'; context.fillText ('HTML (and CSS)',45,25); context.fillText ('DOM / JavaScript', 530,25); context.fillStyle = 'blue'; context.font = '10pt monospace'; context.fillText ('<html>',50,75); context.fillText ('<head>',60,100); context.fillText ('...',70,125); context.fillText ('</head>',60,150); context.fillText ('<body>',60,175); context.fillText ('...',70,200); context.fillText ('<canvas id="Canvas1">',70,225); context.fillText ('...',70,250); context.fillText ('<canvas id="Canvas2">',70,275); context.fillText ('...',70,300); context.fillText ('</body>',60,325); context.fillText ('</html>',50,350); context.fillText ('HTMLDocument', 525,75); context.fillText ('HTMLHeadElement', 550,100); context.fillText ('...',575,125); context.fillText ('...',575,150); context.fillText ('HTMLBodyElement', 550,175); context.fillText ('...',575,200); context.fillText ('HTMLCanvasElement',575,225); context.fillText ('...',575,250); context.fillText ('HTMLCanvasElement',575,275); context.fillText ('...',575,300); // the arrows with text context.strokeStyle = 'green'; context.beginPath(); // the green arrows // first arrow context.moveTo(110,75); context.lineTo(520,75); context.moveTo(515,70); context.lineTo(520,75); context.lineTo(515,80); // second arrow context.moveTo(245,225); context.lineTo(545,225); context.moveTo(540,220); context.lineTo(545,225); context.lineTo(540,230); // third arrow context.moveTo(245,275); context.lineTo(545,275); context.moveTo(540,270); context.lineTo(545,275); context.lineTo(540,280); context.stroke(); context.font = '8pt monospace'; context.textAlign = 'center'; context.fillText ("document",375,65) context.fillText ("document.getElementById('Canvas1')",375,215); context.fillText ("document.getElementById('Canvas2')",375,265);
GridExplained1
var context = document.getElementById('GridExplained1').getContext('2d'); //context.addGrid(); // arrows context.lineWidth = 1.0; //context.lineCap = 'round'; context.strokeStyle = 'blue'; context.beginPath(); context.moveTo (10,10); context.lineTo (310,10); context.lineTo (305,7); context.lineTo (305,13); context.lineTo (310,10); context.moveTo (10,10); context.lineTo (10,160); context.lineTo (7,155); context.lineTo (13,155); context.lineTo (10,160); context.stroke(); // text context.fillStyle = 'black'; context.font = '8px sans-serif'; context.fillText ('0', 25,25); context.fillText ('150', 25, 165); context.fillText ('300', 300, 30); context.font = '20px sans-serif'; context.fillText ('x',155,30); context.fillText ('y',30,90);
GridExplained2
var context = document.getElementById('GridExplained2').getContext('2d'); //context.addGrid(); context.fillStyle = 'red'; context.beginPath(); context.arc (200,25,4,0,2*Math.PI); context.fill();
GridExplained3
var context = document.getElementById('GridExplained3').getContext('2d'); context.addGrid(); context.fillStyle = 'red'; context.beginPath(); context.arc (200,25,4,0,2*Math.PI); context.fill();
GridExplained4
var context = document.getElementById('GridExplained4').getContext('2d'); //context.addGrid(); context.fillStyle = 'rgba(100%,0%,0%,0.5)'; context.beginPath(); context.arc (250,100,100,0,2*Math.PI); context.fill();
GermanFlag
// get the canvas object and its context var canvas = document.getElementById('GermanFlag'); var context = canvas.getContext('2d'); // add the grid with 40 pixels for each step to the next line (see the appendix on this addGrid() method context.addGrid(40); // THIS IS NOT A STANDARD METHOD!!! // now draw the colored rectangles context.fillStyle = '#000000'; // set the color to black ('#000000' is the same as 'black') context.fillRect(0, 0,200,40); // draw a rectangle field with top left point at (0,0), 200 pixel wide and 40 pixel high context.fillStyle = '#FF0000'; // set the color to red (which is '#FF0000' is CSS hexadecimal color notation) context.fillRect(0,40,200,40); // draw same size (200x40 pixel) red rectangle at (0,40) context.fillStyle = '#FFCC00'; // set the color to gold context.fillRect(0,80,200,40); // golden rectangle with left top point at (0,80)
SizeReadingSample
var canvas = document.getElementById('SizeReadingSample'); var message = "This canvas is " + canvas.height + " pixel high and " + canvas.width + " pixel wide."; var context = canvas.getContext('2d'); context.font = "20px Arial"; context.fillText (message, 15, 70);
SizeChangingSample
var canvas = document.getElementById('SizeChangingSample'); canvas.width = 30; canvas.height = 30;
DataUrlSample
ReferenceSample1
var context = document.getElementById('ReferenceSample1').getContext('2d'); context.canvas.width = 250; // reset the canvas width to 250 context.canvas.height = 50; // reset the canvas height to 50
StateSample
var context = document.getElementById('StateSample').getContext('2d'); context.addGrid(); // Text style settings (these will be part of Start A, B, and C alike, because they do not change) context.textAlign = 'center'; context.textBaseline = 'middle'; context.lineWidth = 2.0; context.font = '25px Arial'; // Settings for State A var verticalGrad = context.createLinearGradient (0,0,0,200); verticalGrad.addColorStop (0,'red'); verticalGrad.addColorStop (1,'green'); context.fillStyle = verticalGrad; context.strokeStyle = 'yellow'; // Draw Figure 1 context.fillRect (25,25,100,150); context.strokeText ("Fig 1",75,50); context.strokeText ("State A", 75,125); // Save State A context.save(); // Settings for State B var radGrad = context.createRadialGradient (375,100,5, 375,100,200); radGrad.addColorStop (0,'orange'); radGrad.addColorStop (1,'yellow'); context.fillStyle = radGrad; context.strokeStyle = 'green'; // Draw Figure 2 context.fillRect (175,25,100,150); context.strokeText ("Fig 2",225,50); context.strokeText ("State B",225,125); // Save State B context.save(); // Settings for State C context.fillStyle = '#888888'; context.strokeStyle = '#EEEEEE'; // Draw Figure 3 context.fillRect (325,25,100,150); context.strokeText ("Fig 3",375,50); context.strokeText ("State C",375,125); // Pop State C and restore State B context.restore(); // Draw Figure 4 context.fillRect (475,25,100,150); context.strokeText ("Fig 4",525,50); context.strokeText ("State B",525,125); // Pop state B and restore state A context.restore(); // Draw Figure 5 context.fillRect (625,25,100,150); context.strokeText ("Fig 5",675,50); context.strokeText ("State A",675,125);
ScalingGrid01
var context = document.getElementById('ScalingGrid01').getContext('2d'); // bottom text context.font = '12pt monospace'; context.strokeStyle = 'black'; context.textAlign = 'left'; context.textBaseline = 'bottom'; context.strokeText ('scale(x,y)', 25, 220); // the picture context.strokeStyle = 'black'; context.font = '8pt sans-serif'; context.strokeText ( '(0,0)', 10, 20); context.translate (25,25); context.strokeStyle = 'red'; context.strokeRect (0, 0, 125, 100); context.strokeText ('x', 115, 11); context.strokeText ('y', 5, 93); context.scale (0.8,1.5); context.strokeStyle = 'blue'; context.strokeRect (0, 0, 125, 100); context.strokeText ('x', 115, 11); context.strokeText ('y', 5, 93);
RotationGrid01
var context = document.getElementById('RotationGrid01').getContext('2d'); // bottom text context.font = '12pt monospace'; context.strokeStyle = 'black'; context.textAlign = 'left'; context.textBaseline = 'bottom'; context.strokeText ('rotate(angle)', 25, 220); // the picture context.strokeStyle = 'black'; context.font = '8pt sans-serif'; context.strokeText ( '(0,0)', 60, 20); context.strokeText ( 'angle', 150, 50); context.beginPath(); context.arc (75, 25, 75, 0, 0.5, false); context.stroke(); context.translate (75,25); context.strokeStyle = 'red'; context.strokeRect (0, 0, 125, 100); context.strokeText ('x', 115, 11); context.strokeText ('y', 5, 93); context.rotate (0.5); context.strokeStyle = 'blue'; context.strokeRect (0, 0, 125, 100); context.strokeText ('x', 115, 11); context.strokeText ('y', 5, 93);
TranslatingGrid01
var context = document.getElementById('TranslatingGrid01').getContext('2d'); // bottom text context.font = '12pt monospace'; context.strokeStyle = 'black'; context.textAlign = 'left'; context.textBaseline = 'bottom'; context.strokeText ('translate(x,y)', 25, 220); // the text context.strokeStyle = 'black'; context.font = '8pt sans-serif'; context.lineWidth = 1; context.strokeText ('(0,0)', 10, 20); context.strokeText ('(x,y)', 85, 70); // the blue rectangle with x and y context.translate (25,25); context.strokeStyle = 'red'; context.strokeRect (0, 0, 125, 100); context.strokeText ('x', 115, 11); context.strokeText ('y', 5, 93); // the red rectangle with x and y context.translate (75, 50); context.strokeStyle = 'blue'; context.strokeRect (0, 0, 125, 100); context.strokeText ('x', 115, 11); context.strokeText ('y', 5, 93);
ScalingGrid11
var context = document.getElementById('ScalingGrid11').getContext('2d'); context.addScaledGrid(1,1,40);
ScalingGrid12
var context = document.getElementById('ScalingGrid12').getContext('2d'); context.addScaledGrid(0.8,1.5,40);
ScalingGrid21
var context = document.getElementById('ScalingGrid21').getContext('2d'); context.strokeStyle = 'green'; context.lineWidth = 5.0; context.beginPath(); context.arc (100,100,80,0,2*Math.PI); context.stroke();
ScalingGrid22
var context = document.getElementById('ScalingGrid22').getContext('2d'); context.scale (0.8,1.5); context.strokeStyle = 'green'; context.lineWidth = 5.0; context.beginPath(); context.arc (100,100,80,0,2*Math.PI); context.stroke();
ScalingSample1
var context = document.getElementById('ScalingSample1').getContext('2d'); context.fillStyle = 'red'; context.strokeStyle = 'black'; context.font = '40px Arial'; // 1. draw a rectangle with text context.fillRect (50, 50, 150, 40); context.strokeText ('1. Hello', 55, 85); // 2. scale and draw the same rectangle with text again context.scale (0.8, 2); // shrink x by 0.8 and double y context.fillRect (50, 50, 150, 40); context.strokeText ('2. Hello', 55, 85); // 3. scale once more, and make the same drawings context.scale (0.8, 2); // shrink x by 0.8 and double y, again context.fillRect (50, 50, 150, 40); context.strokeText ('3. Hello', 55, 85);
YMirror1
var context = document.getElementById('YMirror1').getContext('2d'); context.addScaledGrid (-1, 1);
YMirror2
var context = document.getElementById('YMirror2').getContext('2d'); context.scale (-1, 1); context.fillStyle = 'green'; context.fillRect (-175, 70, 150, 60); context.fillStyle = 'yellow'; context.fillRect (-170, 75, 140, 50); context.fillStyle = 'green'; context.font = "40pt Arial"; context.fillText("Hello", -160, 120);
XMirror1
var context = document.getElementById('XMirror1').getContext('2d'); context.addScaledGrid (1, -1);
RotationGrid1
var context = document.getElementById('RotationGrid1').getContext('2d'); context.strokeStyle = 'black'; context.strokeText ( '(0,0)', 60, 20); context.strokeText ( 'angle', 150, 50); context.beginPath(); context.arc (75, 25, 75, 0, 0.5, false); context.stroke(); context.translate (75,25); context.strokeStyle = 'red'; context.strokeRect (0, 0, 125, 100); context.strokeText ('x', 115, 11); context.strokeText ('y', 5, 93); context.rotate (0.5); context.strokeStyle = 'blue'; context.strokeRect (0, 0, 125, 100); context.strokeText ('x', 115, 11); context.strokeText ('y', 5, 93);
RotationGrid23
var canvas = document.getElementById('RotationGrid23'); var context = canvas.getContext('2d'); context.addRotatedGrid (15 * Math.PI / 180);
RotationGrid2
var canvas = document.getElementById('RotationGrid2'); var context = canvas.getContext('2d'); // set the parameters; var d = 50; var w = 300; var h = 150; // derive the indices var i; var j; var i1 = 2 * Math.round (w / d); var i0 = - i1; var j1 = 2 * Math.round (h / d); var j0 = - j1; // the grid lines context.strokeStyle = 'yellow'; context.lineWidth = 1.0; context.beginPath(); for (j = j0; j <= j1; j++) { context.moveTo (0, d * j); context.lineTo (w, d * j); }; for (i = i0; i <= i1; i++) { context.moveTo (d * i, 0); context.lineTo (d * i, h); }; context.stroke(); // the text for the points context.textAlign = 'center'; context.textBaseline = 'middle'; context.fillStyle = 'black'; context.font = '7pt sans-serif'; for (i = i0; i <= i1; i++) { for (j = j0; j <= j1; j++) { context.fillText ( '(' + i * d + ',' + j * d + ')' , i * d, j * d ); }; };
RotationGrid3
var canvas = document.getElementById('RotationGrid3'); var context = canvas.getContext('2d'); // rotate context.rotate (15 * Math.PI / 180); // set the parameters; var d = 50; var w = canvas.width; var h = canvas.height; // derive the indices var i; var j; var i1 = 2 * Math.round (w / d); var i0 = - i1; var j1 = 2 * Math.round (h / d); var j0 = - j1; // the grid lines context.strokeStyle = 'yellow'; context.lineWidth = 1.0; context.beginPath(); for (j = j0; j <= j1; j++) { context.moveTo (- 2 * w, d * j); context.lineTo (2 * w, d * j); }; for (i = i0; i <= i1; i++) { context.moveTo (d * i, - 2 * h); context.lineTo (d * i, 2 * h); }; context.stroke(); // the box context.strokeStyle = 'blue'; context.lineWidth = 1.0; context.strokeRect (0,0,w,h); // the text for the points context.textAlign = 'center'; context.textBaseline = 'middle'; context.fillStyle = 'black'; context.font = '7pt sans-serif'; for (i = i0; i <= i1; i++) { for (j = j0; j <= j1; j++) { context.fillText ( '(' + i * d + ',' + j * d + ')' , i * d, j * d ); }; };
RotationSample1
var context = document.getElementById('RotationSample1').getContext('2d'); context.fillStyle = 'red'; context.strokeStyle = 'black'; context.font = '40px Arial'; // 1. draw a rectangle with text context.fillRect (100, 5, 150, 40); context.strokeText ('1. Hello', 105, 40); // 2. declare a rotation and draw the same rectangle with text again context.rotate (30 * Math.PI / 180); // first rotation of 30 degree context.fillRect (100, 5, 150, 40); context.strokeText ('2. Hello', 105, 40); // 3. declare the same rotation, once more, and make the same drawings context.rotate (30 * Math.PI / 180); // second rotation of 30 degree context.fillRect (100, 5, 150, 40); context.strokeText ('3. Hello', 105, 40);
TranslationGrid2
var context = document.getElementById('TranslationGrid2').getContext('2d'); context.addStandardGrid(50);
TranslationGrid3
var context = document.getElementById('TranslationGrid3').getContext('2d'); context.addTranslatedGrid (100,-50,50);
TranslationGrid4
var context = document.getElementById('TranslationGrid4').getContext('2d'); context.strokeStyle = 'red'; context.strokeRect (25, 25, 250, 150); context.strokeStyle = 'black'; context.textAlign = 'center'; context.strokeText ('x=0', 25, 15); context.strokeText ('50', 75, 15); context.strokeText ('100', 125, 15); context.strokeText ('150', 175, 15); context.strokeText ('200', 225, 15); context.strokeText ('250', 275, 15); context.textAlign = 'right'; context.textBaseline = 'middle'; context.strokeText ('y=0', 20, 25); context.strokeText ('50', 20, 75); context.strokeText ('100', 20, 125); context.strokeText ('150', 20, 175);
TranslationGrid5
var context = document.getElementById('TranslationGrid5').getContext('2d'); context.strokeStyle = 'red'; context.strokeRect (25, 25, 250, 150); context.strokeStyle = 'black'; context.textAlign = 'center'; context.strokeText ('-100', 25, 15); context.strokeText ('-50', 75, 15); context.strokeText ('0', 125, 15); context.strokeText ('50', 175, 15); context.strokeText ('100', 225, 15); context.strokeText ('150', 275, 15); context.textAlign = 'right'; context.textBaseline = 'middle'; context.strokeText ('50', 20, 25); context.strokeText ('100', 20, 75); context.strokeText ('150', 20, 125); context.strokeText ('200', 20, 175);
TranslationSample1
var context = document.getElementById('TranslationSample1').getContext('2d'); context.fillStyle = 'red'; context.strokeStyle = 'black'; context.font = '40px Arial'; // 1. draw the first red rectangle with text context.fillRect (0,5,150,40); context.strokeText ('1. Hello', 5, 40); // 2. declare a translation and draw the same rectangle, again context.translate(125,50); // first call of translate(125,50) context.fillRect (0,5,150,40); context.strokeText ('2. Hello', 5, 40); // 3. declare the same translation, once more, and make the same drawings context.translate(125,50); // second call of translate(125,50) context.fillRect (0,5,150,40); context.strokeText ('3.Hello', 5, 40);
TransformGrid0
var context = document.getElementById('TransformGrid0').getContext('2d'); context.addTransGrid (1, 0, 0, 1, 0, 0, 30, 'blue', 'red', '8pt sans-serif');
TransformGrid1
var context = document.getElementById('TransformGrid1').getContext('2d'); context.addTransGrid (0.5, 0.4, -0.2, 1.2, 200, 0, 30, 'blue', 'red', '8pt sans-serif');
TransformationSample1
var context = document.getElementById('TransformationSample1').getContext('2d'); // prepare the settings for color and font styles context.fillStyle = 'red'; context.strokeStyle = 'black'; context.font = '40px Arial'; // 1. draw the first red rectangle with text context.fillRect (0, 5, 150, 40); context.strokeText ('1. Hello', 5, 40); // 2. declare the translation and draw the same rectangle, again context.transform (0.5, 0.4, -0.2, 1.2, 200, 0); context.fillRect (0, 5, 150, 40); context.strokeText ('2. Hello', 5, 40);
ShearTransform1
var context = document.getElementById('ShearTransform1').getContext('2d'); context.addShearedGrid(0.5,0);
ShearTransform2
var context = document.getElementById('ShearTransform2').getContext('2d'); context.addShearedGrid(0,0.2);
ShearTransform3
var context = document.getElementById('ShearTransform3').getContext('2d'); context.addShearedGrid(0.5,0.2);
RotatedHallo1
var context = document.getElementById('RotatedHallo1').getContext('2d'); // Transformation: 1. rotate, 2. translate context.rotate (1.5*Math.PI); // rotation of 270 degree context.translate (-255,0); // draw the "HELLO" box context.fillStyle = 'red'; context.fillRect (0, 0, 255, 120); context.fillStyle = 'yellow'; context.fillRect (5, 5, 245, 110); context.fillStyle = 'red'; context.font = "50pt Arial"; context.lineWidth = 5.0; context.fillText ("HELLO!", 10, 85);
TurnLeftGrid1
var context = document.getElementById('TurnLeftGrid1').getContext('2d'); context.addStandardGrid();
TurnLeftGrid2
var context = document.getElementById('TurnLeftGrid2').getContext('2d'); context.addTransGrid (0,-1,1,0,0,150);
TurnLeftGrid3
var context = document.getElementById('TurnLeftGrid3').getContext('2d'); context.addRotatedGrid (1.5*Math.PI);
TurnLeftGrid4
var context = document.getElementById('TurnLeftGrid4').getContext('2d'); context.addTransGrid (0,-1,1,0,0,150);
RotatedHallo2
var context = document.getElementById('RotatedHallo2').getContext('2d'); context.addTransGrid (0,-1,1,0,0,255);
RotatedHallo3
var context = document.getElementById('RotatedHallo3').getContext('2d'); // Transformation: 1. rotate, 2. translate context.rotate (1.5*Math.PI); context.translate (-255,0); // draw the "HELLO" box context.fillStyle = 'red'; context.fillRect (0, 0, 255, 120); context.fillStyle = 'yellow'; context.fillRect (5, 5, 245, 110); context.fillStyle = 'red'; context.font = "50pt Arial"; context.lineWidth = 5.0; context.fillText ("HELLO!", 10, 85);
RotatedHalloImage1
var context = document.getElementById('RotatedHalloImage1').getContext('2d'); // 1. The vertical text box // 1.a) Two transformations: first a rotation, then a translation context.rotate (1.5 * Math.PI); context.translate (-255,0); // 1.b) The code for the text box context.fillStyle = 'red'; context.fillRect (0, 0, 255, 120); context.fillStyle = 'yellow'; context.fillRect (5, 5, 245, 110); context.fillStyle = 'red'; context.font = "50pt Arial"; context.lineWidth = 5.0; context.fillText ("HELLO!", 10, 85); // Reset the current transformation context.setTransform (1,0,0,1,0,0); // 2. The mirror image of the horse // 2.a) Two transformations: first mirror at the y-axis, then a translation context.scale (-1, 1); context.translate (-300,0); // 2.b) Insert the image var image = new Image(); image.src = "horse.jpg"; context.drawImage (image, 0, 0, 180, 255);
ImageSample123
var context = document.getElementById('ImageSample123').getContext('2d'); var image = new Image(); image.src = "horse.jpg"; context.drawImage (image, 0, 0, 180, 255);
ScalingImage2
var context = document.getElementById('ScalingImage2').getContext('2d'); context.addTransGrid (-1,0,0,1,300,0); // should be (-1,0,0,1,-300,0) as the result of the composition.
ScalingImage3
var context = document.getElementById('ScalingImage3').getContext('2d'); context.scale (-1, 1); context.translate(-300,0); //context.transform(-1,0,0,1,300,0); var image = new Image(); image.src = "horse.jpg"; context.drawImage (image, 0, 0, 180, 255);
RotatedHalloImage1Again
var context = document.getElementById('RotatedHalloImage1Again').getContext('2d'); context.drawImage (document.getElementById ('RotatedHalloImage1'), 0, 0);
RotatedHalloImage2
var context = document.getElementById('RotatedHalloImage2').getContext('2d'); // 1. The vertical text box // 1.a) Two transformations: first a rotation, then a translation context.rotate (1.5 * Math.PI); context.translate (-255,0); // 1.b) The code for the text box context.fillStyle = 'red'; context.fillRect (0, 0, 255, 120); context.fillStyle = 'yellow'; context.fillRect (5, 5, 245, 110); context.fillStyle = 'red'; context.font = "50pt Arial"; context.lineWidth = 5.0; context.fillText ("HELLO!", 10, 85); // 2. The mirror image of the horse // 2.a) Two transformations: first mirror at the y-axis, then a translation context.scale (-1, 1); context.translate (-300,0); // 2.b) Insert the image var image = new Image(); image.src = "horse.jpg"; context.drawImage (image, 0, 0, 180, 255);
GlobalAlphaSample1
var context = document.getElementById('GlobalAlphaSample1').getContext('2d'); context.globalAlpha = 1.0; context.font = '20px Arial'; context.strokeStyle = 'black'; // settings for the text style context.fillStyle = 'red'; context.fillRect( 10,10,150,100); context.strokeText('red', 20, 50); context.fillStyle = 'green'; context.fillRect(110,30,150,100); context.strokeText('green', 120, 80); context.fillStyle = 'yellow'; context.fillRect(210,50,150,100); context.strokeText('yellow',220,110); context.fillStyle = 'blue'; context.fillRect(310,70,150,100); context.strokeText('blue', 320,140);
GlobalAlphaSample2
var context = document.getElementById('GlobalAlphaSample2').getContext('2d'); context.globalAlpha = 0.5; context.font = '20px Arial'; context.strokeStyle = 'black'; // settings for the text style context.fillStyle = 'red'; context.fillRect( 10,10,150,100); context.strokeText('red', 20, 50); context.fillStyle = 'green'; context.fillRect(110,30,150,100); context.strokeText('green', 120, 80); context.fillStyle = 'yellow'; context.fillRect(210,50,150,100); context.strokeText('yellow',220,110); context.fillStyle = 'blue'; context.fillRect(310,70,150,100); context.strokeText('blue', 320,140);
GlobalAlphaSample3
var context = document.getElementById('GlobalAlphaSample3').getContext('2d'); context.globalAlpha = 0.1; context.font = '20px Arial'; context.strokeStyle = 'black'; // settings for the text style context.fillStyle = 'red'; context.fillRect( 10,10,150,100); context.strokeText('red', 20, 50); context.fillStyle = 'green'; context.fillRect(110,30,150,100); context.strokeText('green', 120, 80); context.fillStyle = 'yellow'; context.fillRect(210,50,150,100); context.strokeText('yellow',220,110); context.fillStyle = 'blue'; context.fillRect(310,70,150,100); context.strokeText('blue', 320,140);
GlobalCompositeSample
var context = document.getElementById('GlobalCompositeSample').getContext('2d'); // 1. add the orange square context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); // 2. set the globalCompositeOperation context.globalCompositeOperation = "source-over"; // 3. add the cyan circle context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
SourceOverSample
var context = document.getElementById('SourceOverSample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "source-over"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
SourceAtopSample
var context = document.getElementById('SourceAtopSample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "source-atop"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
SourceInSample
var context = document.getElementById('SourceInSample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "source-in"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
SourceOutSample
var context = document.getElementById('SourceOutSample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "source-out"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
DestinationOverSample
var context = document.getElementById('DestinationOverSample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "destination-over"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
DestinationAtopSample
var context = document.getElementById('DestinationAtopSample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "destination-atop"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
DestinationInSample
var context = document.getElementById('DestinationInSample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "destination-in"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
DestinationOutSample
var context = document.getElementById('DestinationOutSample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "destination-out"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
LighterSample
var context = document.getElementById('LighterSample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "lighter"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
CopySample
var context = document.getElementById('CopySample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "copy"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
XorSample
var context = document.getElementById('XorSample').getContext('2d'); context.fillStyle = 'orange'; context.fillRect (0, 0, 60, 60); context.globalCompositeOperation = "xor"; context.fillStyle = 'cyan'; context.arc(54,54,36,0,2*Math.PI,false); context.fill();
StrokeStyleSample1
var context = document.getElementById('StrokeStyleSample1').getContext('2d'); // 1. set strokeStyle to a hexadecimal color value, namely '#008000' (same as 'green') context.strokeStyle = '#008000'; // 2. draw a kind of half cirlce on the left context.beginPath(); context.moveTo (60, 10); context.lineTo (60, 110); context.bezierCurveTo (0, 110, 0, 10, 60, 10); context.stroke(); context.closePath(); // 3. draw a rectangle on the right top context.strokeRect (80, 10, 230, 30); // 4. set the text font and write 'Hello!' on the right bottom of the canvas context.font = '60pt sans-serif'; context.strokeText ('Hello!', 80, 110);
FillStyleSample1
var context = document.getElementById('FillStyleSample1').getContext('2d'); // 1. set strokeStyle to a hexadecimal color value, namely '#008000' (same as 'green') context.fillStyle = '#008000'; // 2. draw a kind of half cirlce on the left context.beginPath(); context.moveTo (60, 10); context.lineTo (60, 110); context.bezierCurveTo (0, 110, 0, 10, 60, 10); context.fill(); context.closePath(); // 3. draw a rectangle on the right top context.fillRect (80, 10, 230, 30); // 4. set the text font and write 'Hello!' on the right bottom of the canvas context.font = '60pt sans-serif'; context.fillText ('Hello!', 80, 110);
Rainbow1
var context = document.getElementById('Rainbow1').getContext('2d'); var rainbowGradient = context.createLinearGradient (100, 50, 500, 50); rainbowGradient.addColorStop (0, 'red'); rainbowGradient.addColorStop (0.25, 'yellow'); rainbowGradient.addColorStop (0.5, 'green'); rainbowGradient.addColorStop (0.75, 'blue'); rainbowGradient.addColorStop (1, 'violet'); context.fillStyle = rainbowGradient; context.fillRect (0, 0, 600, 100);
Rainbow2
var context = document.getElementById('Rainbow2').getContext('2d'); context.addGrid(50); context.strokeStyle = 'black'; context.lineWidth = 2.0; context.textAlign = 'center'; context.beginPath(); context.moveTo (100, 50); context.lineTo (500, 50); context.arc (100, 50, 3.5, 0, 2*Math.PI, false); context.arc (500, 50, 3.5, 0, 2*Math.PI, false); context.stroke(); context.closePath(); context.lineWidth = 0.6; context.font = '14pt sans-serif'; context.fillText ('createLinearGradient (100, 50, 500, 50)', 300, 30);
Rainbow3
var context = document.getElementById('Rainbow3').getContext('2d'); context.addGrid(50); context.strokeStyle = 'black'; context.lineWidth = 2.0; context.textAlign = 'center'; context.beginPath(); context.moveTo (100, 50); context.lineTo (500, 50); context.stroke(); context.closePath(); context.beginPath(); context.fillStyle = 'red'; context.arc (100, 50, 3.5, 0, 2*Math.PI, false); context.fill(); context.closePath(); context.beginPath(); context.fillStyle = 'yellow'; context.arc (200, 50, 3.5, 0, 2*Math.PI, false); context.fill(); context.closePath(); context.beginPath(); context.fillStyle = 'green'; context.arc (300, 50, 3.5, 0, 2*Math.PI, false); context.fill(); context.closePath(); context.beginPath(); context.fill(); context.closePath(); context.beginPath(); context.fillStyle = 'blue'; context.arc (400, 50, 3.5, 0, 2*Math.PI, false); context.fill(); context.closePath(); context.beginPath(); context.fillStyle = 'violet'; context.arc (500, 50, 3.5, 0, 2*Math.PI, false); context.fill(); context.closePath(); context.fillStyle = 'black'; context.lineWidth = 0.6; context.font = '14pt sans-serif'; context.fillText ('addColorStop', 300, 30); context.font = '8pt sans-serif'; context.fillText ('0', 100, 70); context.fillText ('0.25', 200, 70); context.fillText ('0.5', 300, 70); context.fillText ('0.75', 400, 70); context.fillText ('1', 500, 70); context.fillText ("'red'", 100, 90); context.fillText ("'yellow'", 200, 90); context.fillText ("'green'", 300, 90); context.fillText ("'blue'", 400, 90); context.fillText ("'violet'", 500, 90);
RainbowStrokeStyleSample1
var context = document.getElementById('RainbowStrokeStyleSample1').getContext('2d'); // 1. set strokeStyle to a linear gradient value var rainbowGradient = context.createLinearGradient (0, 60, 320, 60); rainbowGradient.addColorStop (0, 'red'); rainbowGradient.addColorStop (0.25, 'yellow'); rainbowGradient.addColorStop (0.5, 'green'); rainbowGradient.addColorStop (0.75, 'blue'); rainbowGradient.addColorStop (1, 'violet'); context.strokeStyle = rainbowGradient; // 2. draw a kind of half cirlce on the left context.beginPath(); context.moveTo (60, 10); context.lineTo (60, 110); context.bezierCurveTo (0, 110, 0, 10, 60, 10); context.stroke(); context.closePath(); // 3. draw a rectangle on the right top context.strokeRect (80, 10, 230, 30); // 4. set the text font and write 'Hello!' on the right bottom of the canvas context.font = '60pt sans-serif'; context.strokeText ('Hello!', 80, 110);
RadialSample
var context = document.getElementById('RadialSample').getContext('2d'); // 1. create a radial gradient var rg = context.createRadialGradient (80, 80, 20, 120, 120, 110); // 2. add colors rg.addColorStop (0, 'yellow'); rg.addColorStop (1, 'red'); // 3. set the fill style to the new gradient context.fillStyle = rg; // 4. now draw some filled objects; in this case just a circle context.beginPath(); context.arc (120,120,110,0,2*Math.PI,false); context.fill(); context.closePath();
RadialSample1
var context = document.getElementById('RadialSample1').getContext('2d'); context.addGrid(20); context.strokeStyle = 'black'; context.lineWidth = 2.0; context.beginPath(); context.arc (80,80,20,0,2*Math.PI,false); context.stroke(); context.closePath(); context.beginPath(); context.arc (120,120,110,0,2*Math.PI,false); context.stroke(); context.closePath(); context.textAlign = 'center'; context.fillText ('start', 80, 110); context.fillText ('end', 205, 210);
RadialSample2
var context = document.getElementById('RadialSample2').getContext('2d'); context.addGrid(20); context.strokeStyle = 'black'; context.lineWidth = 2.0; context.beginPath(); context.arc (80,80,20,0,2*Math.PI,false); context.stroke(); context.closePath(); context.beginPath(); context.arc (90,90,42.5,0,2*Math.PI,false); context.stroke(); context.closePath(); context.beginPath(); context.arc (100,100,65,0,2*Math.PI,false); context.stroke(); context.closePath(); context.beginPath(); context.arc (110,110,87.5,0,2*Math.PI,false); context.stroke(); context.closePath(); context.beginPath(); context.arc (120,120,110,0,2*Math.PI,false); context.stroke(); context.closePath(); context.fillText ('0.0', 90, 110); context.fillText ('0.25', 125, 130); context.fillText ('0.5', 160, 150); context.fillText ('0.75', 185, 170); context.fillText ('1.0', 220, 190);
RadialSample3
var context = document.getElementById('RadialSample3').getContext('2d'); context.addGrid(20); context.strokeStyle = 'black'; context.lineWidth = 5.0; context.strokeStyle = 'yellow'; context.beginPath(); context.arc (80,80,20,0,2*Math.PI,false); context.stroke(); context.closePath(); context.strokeStyle = 'red'; context.beginPath(); context.arc (120,120,110,0,2*Math.PI,false); context.stroke(); context.closePath();
RadialSample4
var context = document.getElementById('RadialSample4').getContext('2d'); context.addGrid(20); // 1. create a radial gradient var rg = context.createRadialGradient (80, 80, 20, 120, 120, 110); // 2. add colors rg.addColorStop (0, 'yellow'); rg.addColorStop (1, 'red'); // 3. set the fill style to the new gradient context.fillStyle = rg; context.beginPath(); context.arc (120,120,110,0,2*Math.PI,false); context.fill(); context.closePath();
RadialSample8
var context = document.getElementById('RadialSample8').getContext('2d'); // 1. create a radial gradient var rg = context.createRadialGradient (80, 80, 20, 120, 120, 110); // 2. add colors rg.addColorStop (0, 'yellow'); rg.addColorStop (1, 'red'); // 3. set the fill style to the new gradient context.fillStyle = rg; // 4. now draw some filled objects; context.fillRect (0, 0, 240, 240);
RadialSample9
var context = document.getElementById('RadialSample9').getContext('2d'); // 1. create a radial gradient var rg = context.createRadialGradient (80, 80, 20, 120, 120, 110); // 2. add colors rg.addColorStop (0, 'white'); rg.addColorStop (1, 'black'); // 3. set the fill style to the new gradient context.fillStyle = rg; // 4. now draw some filled objects; context.fillRect (0, 0, 240, 240);
RadialSample7
var context = document.getElementById('RadialSample7').getContext('2d'); // 1. create a radial gradient var rg = context.createRadialGradient (80, 80, 20, 120, 120, 110); // 2. add colors rg.addColorStop (0, 'red'); rg.addColorStop (0.25, 'yellow'); rg.addColorStop (0.5, 'green'); rg.addColorStop (0.75, 'blue'); rg.addColorStop (1, 'violet'); // 3. set the fill style to the new gradient context.fillStyle = rg; // 4. now draw some filled objects; context.fillRect (0, 0, 240, 240);
RadialGradient1
var context = document.getElementById('RadialGradient1').getContext('2d'); context.addGrid(); var rainbowGradient = context.createRadialGradient (100, 100, 10, 100, 100, 75); rainbowGradient.addColorStop (0, 'orange'); rainbowGradient.addColorStop (1, 'cyan'); context.fillStyle = rainbowGradient; context.fillRect (0, 0, 200, 200);
RadialGradient2
var context = document.getElementById('RadialGradient2').getContext('2d'); context.addGrid(); var rainbowGradient = context.createRadialGradient (80, 80, 10, 120, 120, 75); rainbowGradient.addColorStop (0, 'orange'); rainbowGradient.addColorStop (1, 'cyan'); context.fillStyle = rainbowGradient; context.fillRect (0, 0, 200, 200);
RadialGradient3
var context = document.getElementById('RadialGradient3').getContext('2d'); context.addGrid(); var rainbowGradient = context.createRadialGradient (50, 50, 50, 150, 150, 50); rainbowGradient.addColorStop (0, 'orange'); rainbowGradient.addColorStop (1, 'cyan'); context.fillStyle = rainbowGradient; context.fillRect (0, 0, 200, 200);
RadialGradient4
var context = document.getElementById('RadialGradient4').getContext('2d'); context.addGrid(); var rainbowGradient = context.createRadialGradient (30, 30, 10, 150, 150, 50); rainbowGradient.addColorStop (0, 'orange'); rainbowGradient.addColorStop (1, 'cyan'); context.fillStyle = rainbowGradient; context.fillRect (0, 0, 200, 200);
RadialGradientCircles1
var context = document.getElementById('RadialGradientCircles1').getContext('2d'); context.addGrid(); context.lineWidth = 5.0; // orange circle context.strokeStyle = 'orange'; context.beginPath(); context.arc (100, 100, 10, 0, 2 * Math.PI, false); context.stroke(); context.closePath(); // cyan circle context.strokeStyle = 'cyan'; context.beginPath(); context.arc (100, 100, 75, 0, 2 * Math.PI, false); context.stroke();
RadialGradientCircles2
var context = document.getElementById('RadialGradientCircles2').getContext('2d'); context.addGrid(); context.lineWidth = 5.0; // orange circle context.strokeStyle = 'orange'; context.beginPath(); context.arc (80, 80, 10, 10, 0, 2 * Math.PI, false); context.stroke(); context.closePath(); // cyan circle context.strokeStyle = 'cyan'; context.beginPath(); context.arc (120, 120, 75, 0, 2 * Math.PI, false); context.stroke();
RadialGradientCircles3
var context = document.getElementById('RadialGradientCircles3').getContext('2d'); context.addGrid(); context.lineWidth = 5.0; // orange circle context.strokeStyle = 'orange'; context.beginPath(); context.arc (50, 50, 50, 0, 2 * Math.PI, false); context.stroke(); context.closePath(); // cyan circle context.strokeStyle = 'cyan'; context.beginPath(); context.arc (150, 150, 50, 0, 2 * Math.PI, false); context.stroke();
RadialGradientCircles4
var context = document.getElementById('RadialGradientCircles4').getContext('2d'); context.addGrid(); context.lineWidth = 5.0; // orange circle context.strokeStyle = 'orange'; context.beginPath(); context.arc (30, 30, 10, 10, 0, 2 * Math.PI, false); context.stroke(); context.closePath(); // cyan circle context.strokeStyle = 'cyan'; context.beginPath(); context.arc (150, 150, 50, 0, 2 * Math.PI, false); context.stroke();
CreatePatternSample1
var context = document.getElementById('CreatePatternSample1').getContext('2d'); // create an Image object from the grayhorse.jpg file var horseImage = new Image (); horseImage.src = 'grayhorse.jpg'; // create a CanvasPattern object with this image and make that the new fillStyle value var horsePattern = context.createPattern (horseImage, 'repeat'); context.fillStyle = horsePattern; // Now draw same objects: first a rectangle context.fillRect (0, 0, 200, 210); // then a triangle context.beginPath(); context.moveTo (220, 0); context.lineTo (220, 100); context.lineTo (550, 50); context.lineTo (220, 0); context.fill(); context.closePath(); // and finally write "Hello!" context.font = '120px sans-serif'; context.fillText ('Hello!', 210, 200);
LineWidthSample1
var context = document.getElementById('LineWidthSample1').getContext('2d'); //context.addGrid(20); context.strokeStyle = 'black'; context.textAlign = 'center'; context.lineWidth = 0.1; context.beginPath(); context.moveTo (20, 25); context.lineTo (20, 100); context.stroke(); context.fillText ('0.1', 20, 125); context.lineWidth = 0.2; context.beginPath(); context.moveTo (60, 25); context.lineTo (60, 100); context.stroke(); context.fillText ('0.2', 60, 125); context.lineWidth = 0.3; context.beginPath(); context.moveTo (100, 25); context.lineTo (100, 100); context.stroke(); context.fillText ('0.3', 100, 125); context.lineWidth = 0.4; context.beginPath(); context.moveTo (140, 25); context.lineTo (140, 100); context.stroke(); context.fillText ('0.4', 140, 125); context.lineWidth = 0.5; context.beginPath(); context.moveTo (180, 25); context.lineTo (180, 100); context.stroke(); context.fillText ('0.5', 180, 125); context.lineWidth = 0.6; context.beginPath(); context.moveTo (220, 25); context.lineTo (220, 100); context.stroke(); context.fillText ('0.6', 220, 125); context.lineWidth = 0.7; context.beginPath(); context.moveTo (260, 25); context.lineTo (260, 100); context.stroke(); context.fillText ('0.7', 260, 125); context.lineWidth = 0.8; context.beginPath(); context.moveTo (300, 25); context.lineTo (300, 100); context.stroke(); context.fillText ('0.8', 300, 125); context.lineWidth = 0.9; context.beginPath(); context.moveTo (340, 25); context.lineTo (340, 100); context.stroke(); context.fillText ('0.9', 340, 125); context.lineWidth = 1.0; context.beginPath(); context.moveTo (380, 25); context.lineTo (380, 100); context.stroke(); context.fillText ('1.0', 380, 125); context.lineWidth = 1.5; context.beginPath(); context.moveTo (420, 25); context.lineTo (420, 100); context.stroke(); context.fillText ('1.5', 420, 125); context.lineWidth = 2.0; context.beginPath(); context.moveTo (460, 25); context.lineTo (460, 100); context.stroke(); context.fillText ('2.0', 460, 125); context.lineWidth = 3.0; context.beginPath(); context.moveTo (500, 25); context.lineTo (500, 100); context.stroke(); context.fillText ('3.0', 500, 125); context.lineWidth = 4.0; context.beginPath(); context.moveTo (540, 25); context.lineTo (540, 100); context.stroke(); context.fillText ('4.0', 540, 125); context.lineWidth = 5.0; context.beginPath(); context.moveTo (580, 25); context.lineTo (580, 100); context.stroke(); context.fillText ('5.0', 580, 125); context.lineWidth = 10.0; context.beginPath(); context.moveTo (620, 25); context.lineTo (620, 100); context.stroke(); context.fillText ('10.0', 620, 125); context.lineWidth = 20.0; context.beginPath(); context.moveTo (660, 25); context.lineTo (660, 100); context.stroke(); context.fillText ('20.0', 660, 125);
LineWidthCanvas1
var context = document.getElementById('LineWidthCanvas1').getContext('2d'); //context.addGrid(20); context.fillStyle = 'blue'; context.strokeStyle = 'blue'; context.textAlign = 'right'; context.textBaseline = 'middle'; context.fillText ('0', 15, 20); context.fillText ('1', 15, 40); context.fillText ('2', 15, 60); context.fillText ('3', 15, 80); context.fillText ('4', 15,100); context.textAlign = 'center'; context.fillText ( '0', 20, 15); context.fillText ( '1', 40, 15); context.fillText ( '2', 60, 15); context.fillText ( '3', 80, 15); context.fillText ( '4',100, 15); context.fillText ( '5',120, 15); context.fillText ( '6',140, 15); context.fillText ( '7',160, 15); context.fillText ( '8',180, 15); context.fillText ( '9',200, 15); context.fillText ('10',220, 15); context.beginPath (); context.moveTo ( 19, 20); context.lineTo (220, 20); context.moveTo ( 19, 40); context.lineTo (220, 40); context.moveTo ( 19, 60); context.lineTo (220, 60); context.moveTo ( 19, 80); context.lineTo (220, 80); context.moveTo ( 19,100); context.lineTo (220,100); context.moveTo ( 20, 19); context.lineTo ( 20,100); context.moveTo ( 40, 19); context.lineTo ( 40,100); context.moveTo ( 60, 19); context.lineTo ( 60,100); context.moveTo ( 80, 19); context.lineTo ( 80,100); context.moveTo (100, 19); context.lineTo (100,100); context.moveTo (120, 19); context.lineTo (120,100); context.moveTo (140, 19); context.lineTo (140,100); context.moveTo (160, 19); context.lineTo (160,100); context.moveTo (180, 19); context.lineTo (180,100); context.moveTo (200, 19); context.lineTo (200,100); context.moveTo (220, 19); context.lineTo (220,100); context.stroke(); context.closePath (); // red line with two bullets at the end context.strokeStyle = 'red'; context.beginPath(); context.arc (20,60,2,0,2*Math.PI); context.arc (220,60,2,0,2*Math.PI); context.moveTo (20,60); context.lineTo (220, 60); context.stroke(); context.closePath(); // black and gray "line" with text underneath context.fillStyle = 'rgba(110,110,110,0.6)'; //'#DDDDDD'; context.fillRect (20, 40, 200, 40); context.fillStyle = 'rgba(0,0,0,0.6)'; context.fillRect (20, 50, 200, 20); context.fillStyle = 'black'; context.fillText ('black line of width 1.0 from (0,2) to (10,2)', 125, 120);
LineWidthCanvas2
var context = document.getElementById('LineWidthCanvas2').getContext('2d'); //context.addGrid(20); context.fillStyle = 'blue'; context.strokeStyle = 'blue'; context.textAlign = 'right'; context.textBaseline = 'middle'; context.fillText ('0', 15, 20); context.fillText ('1', 15, 40); context.fillText ('2', 15, 60); context.fillText ('3', 15, 80); context.fillText ('4', 15,100); context.textAlign = 'center'; context.fillText ( '0', 20, 15); context.fillText ( '1', 40, 15); context.fillText ( '2', 60, 15); context.fillText ( '3', 80, 15); context.fillText ( '4',100, 15); context.fillText ( '5',120, 15); context.fillText ( '6',140, 15); context.fillText ( '7',160, 15); context.fillText ( '8',180, 15); context.fillText ( '9',200, 15); context.fillText ('10',220, 15); context.beginPath (); context.moveTo ( 19, 20); context.lineTo (220, 20); context.moveTo ( 19, 40); context.lineTo (220, 40); context.moveTo ( 19, 60); context.lineTo (220, 60); context.moveTo ( 19, 80); context.lineTo (220, 80); context.moveTo ( 19,100); context.lineTo (220,100); context.moveTo ( 20, 19); context.lineTo ( 20,100); context.moveTo ( 40, 19); context.lineTo ( 40,100); context.moveTo ( 60, 19); context.lineTo ( 60,100); context.moveTo ( 80, 19); context.lineTo ( 80,100); context.moveTo (100, 19); context.lineTo (100,100); context.moveTo (120, 19); context.lineTo (120,100); context.moveTo (140, 19); context.lineTo (140,100); context.moveTo (160, 19); context.lineTo (160,100); context.moveTo (180, 19); context.lineTo (180,100); context.moveTo (200, 19); context.lineTo (200,100); context.moveTo (220, 19); context.lineTo (220,100); context.stroke(); context.closePath (); // red line with two bullets at the end context.strokeStyle = 'red'; context.beginPath(); context.arc (20,50,2,0,2*Math.PI); context.arc (220,50,2,0,2*Math.PI); context.moveTo (20,50); context.lineTo (220, 50); context.stroke(); context.closePath(); // black and gray "line" with text underneath context.fillStyle = 'rgba(0,0,0,0.6)'; context.fillRect (20, 40, 200, 20); context.fillStyle = 'black'; context.fillText ('black line of width 1.0 from (0,1.5) to (10,1.5)', 125, 120);
LineCapSample1
var context = document.getElementById('LineCapSample1').getContext('2d'); // orange border line context.strokeStyle = 'orange'; context.beginPath(); context.moveTo (0, 25); context.lineTo (530, 25); context.moveTo (0, 100); context.lineTo (530, 100); context.stroke(); context.closePath(); // optional grid //context.addGrid (25); // settings for the lines and text context.font = '12pt sans-serif'; context.textAlign = 'center'; context.strokeStyle = 'black'; // left "butt" example context.fillText ("'butt' (default)", 60, 135); context.lineCap = 'butt'; context.lineWidth = 5.0; context.beginPath(); context.moveTo (25, 25); context.lineTo (25, 100); context.stroke(); context.lineWidth = 10.0; context.beginPath(); context.moveTo (60, 25); context.lineTo (60, 100); context.stroke(); context.lineWidth = 20.0; context.beginPath(); context.moveTo (100, 25); context.lineTo (100, 100); context.stroke(); // middle "round" example context.fillText ("'round'", 260, 135); context.lineCap = 'round'; context.lineWidth = 5.0; context.beginPath(); context.moveTo (225, 25); context.lineTo (225, 100); context.stroke(); context.lineWidth = 10.0; context.beginPath(); context.moveTo (260, 25); context.lineTo (260, 100); context.stroke(); context.lineWidth = 20.0; context.beginPath(); context.moveTo (300, 25); context.lineTo (300, 100); context.stroke(); // right "square" example context.fillText ("'square'" , 460, 135); context.lineCap = 'square'; context.lineWidth = 5.0; context.beginPath(); context.moveTo (425, 25); context.lineTo (425, 100); context.stroke(); context.lineWidth = 10.0; context.beginPath(); context.moveTo (460, 25); context.lineTo (460, 100); context.stroke(); context.lineWidth = 20.0; context.beginPath(); context.moveTo (500, 25); context.lineTo (500, 100); context.stroke();
LineJoinRound
var context = document.getElementById('LineJoinRound').getContext('2d'); context.scale (0.5, 0.5); context.lineWidth = 1.0; context.strokeStyle = 'orange'; context.beginPath (); context.moveTo ( 0, 50); context.lineTo (600, 50); context.moveTo ( 0, 150); context.lineTo (600, 150); context.stroke (); context.closePath (); context.font = "16pt sans-serif"; context.strokeStyle = 'black'; context.fillText ("lineJoin = 'round'", 25, 25); context.lineJoin = 'round'; context.lineWidth = 20.0; context.beginPath (); context.moveTo ( 30, 100); context.lineTo (200, 150); context.lineTo (300, 50); context.lineTo (380, 150); context.lineTo (440, 50); context.lineTo (480, 150); context.lineTo (510, 50); context.lineTo (530, 150); context.lineTo (546, 50); context.lineTo (560, 150); context.lineTo (570, 100); context.stroke ();
LineJoinBevel
var context = document.getElementById('LineJoinBevel').getContext('2d'); context.scale (0.5, 0.5); context.lineWidth = 1.0; context.strokeStyle = 'orange'; context.beginPath (); context.moveTo ( 0, 50); context.lineTo (600, 50); context.moveTo ( 0, 150); context.lineTo (600, 150); context.stroke (); context.closePath (); context.font = "16pt sans-serif"; context.strokeStyle = 'black'; context.fillText ("lineJoin = 'bevel'", 25, 25); context.lineJoin = 'bevel'; context.lineWidth = 20.0; context.beginPath (); context.moveTo ( 30, 100); context.lineTo (200, 150); context.lineTo (300, 50); context.lineTo (380, 150); context.lineTo (440, 50); context.lineTo (480, 150); context.lineTo (510, 50); context.lineTo (530, 150); context.lineTo (546, 50); context.lineTo (560, 150); context.lineTo (570, 100); context.stroke ();
LineJoinMiter
var context = document.getElementById('LineJoinMiter').getContext('2d'); context.scale (0.5, 0.5); context.lineWidth = 1.0; context.strokeStyle = 'orange'; context.beginPath (); context.moveTo ( 0, 50); context.lineTo (600, 50); context.moveTo ( 0, 150); context.lineTo (600, 150); context.stroke (); context.closePath (); context.font = "16pt sans-serif"; context.strokeStyle = 'black'; context.fillText ("lineJoin = 'miter'", 25, 25); context.lineJoin = 'miter'; context.lineWidth = 20.0; context.beginPath (); context.moveTo ( 30, 100); context.lineTo (200, 150); context.lineTo (300, 50); context.lineTo (380, 150); context.lineTo (440, 50); context.lineTo (480, 150); context.lineTo (510, 50); context.lineTo (530, 150); context.lineTo (546, 50); context.lineTo (560, 150); context.lineTo (570, 100); context.stroke ();
MiterLimitCanvas1
var context = document.getElementById('MiterLimitCanvas1').getContext('2d'); //context.addGrid(); // add the text context.textAlign = 'center'; context.lineWidth = 1.0; context.font = '10pt sans-serif'; context.fillStyle = 'black'; context.fillText ("lineWidth = 25.0", 75, 25); context.fillText ("miterLimit = 20.0", 75, 45); context.fillText ("lineWidth = 25.0", 275, 25); context.fillText ("miterLimit = 1.0", 275, 45); // set lineJoin to miter (which is actually the default) context.lineJoin = 'miter'; // left example context.miterLimit = 20.0; context.strokeStyle = 'black'; context.lineWidth = 25.0; context.beginPath(); context.moveTo (25, 225); context.lineTo (75, 100); context.lineTo (125, 225); context.stroke(); context.closePath(); context.strokeStyle = 'orange'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (25, 225); context.lineTo (75, 100); context.lineTo (125, 225); context.stroke(); context.closePath(); // right example context.miterLimit = 1.0; context.strokeStyle = 'black'; context.lineWidth = 25.0; context.beginPath(); context.moveTo (225, 225); context.lineTo (275, 100); context.lineTo (325, 225); context.stroke(); context.closePath(); context.strokeStyle = 'orange'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (225, 225); context.lineTo (275, 100); context.lineTo (325, 225); context.stroke(); context.closePath(); // upper and lower orange border lines context.strokeStyle = 'orange'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (0, 67); context.lineTo (350, 67); context.moveTo (0, 135); context.lineTo (350, 135); context.stroke(); context.closePath();
ShadowSample0
var context = document.getElementById("ShadowSample0").getContext("2d"); // General settings context.font = '40pt Arial'; // sets the font context.lineWidth = '5' // sets the line width for the strokeRect() calls below context.strokeStyle = 'green' // sets the color for the strokeRect() calls below context.fillStyle = 'red'; // sets the color for the fillText() and fillRect() calls below // #1 column with default (= no) shadow context.fillText ("# 1", 25, 45); context.fillRect (25, 70, 100, 100); context.strokeRect (25, 200, 100, 100); // #2 column context.shadowOffsetX = 15; // shadow appears 15 pixel to the right context.shadowOffsetY = 15; // shadow appears 15 pixel to the botttom context.shadowColor = 'orange'; // shadow color now is 'orange' context.shadowBlur = 0; // zero blur: this is a crisp shadow context.fillText ("# 2", 225, 45); context.fillRect (225, 70, 100, 100); context.strokeRect (225, 200, 100, 100); // #3 column context.shadowOffsetX = 15; // again, lets shadows appear 15 pixel to the right context.shadowOffsetY = 15; // ... and 15 pixel to the bottom context.shadowColor = 'rgba(0,0,0,0.5)'; // shadow color is black, but half transparent context.shadowBlur = 5; // shadow is blurred context.fillText ("# 3", 425, 45); context.fillRect (425, 70, 100, 100); context.strokeRect (425, 200, 100, 100);
ShadowOffsetXSample
var context = document.getElementById("ShadowOffsetXSample").getContext('2d'); // settings for the use of fillText below context.fillStyle = 'black'; context.font = '40pt Arial'; // set the shadow color to a visible 'orange' context.shadowColor = 'orange'; // #1 text with horizontal shadow offset 0 (i.e. shadow behind the text and thus invisible) context.shadowOffsetX = 0; context.fillText ("#1", 50, 50); // #2 text with horizontal shadow offset 10 (i.e. 10 pixel to the right) context.shadowOffsetX = 10; context.fillText ("#2", 200, 50); // #3 text with horizontal shadow offset -10 (i.e. 10 pixel to the left) context.shadowOffsetX = -10; context.fillText ("#3", 350, 50); // #4 text with horizontal shadow offset 75 (i.e. 75 pixel to the right) context.shadowOffsetX = 75; context.fillText ("#4", 500, 50);
ShadowOffsetYSample
var context = document.getElementById("ShadowOffsetYSample").getContext('2d'); // settings for the use of fillText below context.fillStyle = 'black'; context.font = '40pt Arial'; // set the shadow color to a visible 'orange' context.shadowColor = 'orange'; // #1 text with vertical shadow offset 0 (i.e. shadow behind the text and thus invisible) context.shadowOffsetY = 0; context.fillText ("#1", 50, 50); // #2 text with vertical shadow offset 10 (i.e. 10 pixel down) context.shadowOffsetY = 10; context.fillText ("#2", 200, 50); // #3 text with vertical shadow offset -10 (i.e. 10 pixel up) context.shadowOffsetY = -10; context.fillText ("#3", 350, 50); // #4 text with vertical shadow offset 75 (i.e. 75 pixel down) context.shadowOffsetY = 75; context.fillText ("#4", 500, 50);
ShadowBlurSample1
var context = document.getElementById("ShadowBlurSample1").getContext('2d'); // settings for the use of fillText below context.fillStyle = 'black'; context.font = '40pt Arial'; // set the shadow color to a visible 'orange' and the x- and y-offset to 15 context.shadowColor = 'orange'; context.shadowOffsetX = 15; context.shadowOffsetY = 15; // #1 context.shadowBlur = 0; context.fillText ("#1", 50, 50); // #2 context.shadowBlur = 2; context.fillText ("#2", 200, 50); // #3 context.shadowBlur = 4; context.fillText ("#3", 350, 50); // #4 context.shadowBlur = 8; context.fillText ("#4", 500, 50);
ShadowBlurSample2
var context = document.getElementById("ShadowBlurSample2").getContext('2d'); // text settings context.font = '28pt Arial'; context.fillStyle = 'red'; // shadow settings context.shadowColor = 'blue'; context.shadowBlur = 5; context.shadowOffsetX = 0; context.shadowOffsetY = 0; // add the text context.fillText ("shadow: blur 5, color blue, x- and y-offset 0", 20, 50);
ShadowColorSample
var context = document.getElementById("ShadowColorSample").getContext('2d'); // settings for the use of fillText below context.fillStyle = 'black'; context.font = '40pt Arial'; // set the shadow color to a visible 'orange' and the x- and y-offset to 15 context.shadowBlur = 3; context.shadowOffsetX = 15; context.shadowOffsetY = 15; // #1 context.shadowColor = 'aqua'; context.fillText ("#1", 50, 50); // #2 context.shadowColor = 'rgba(0%,0%,0%,0.5)'; context.fillText ("#2", 200, 50); // #3 context.shadowColor = '#CCCCCC'; context.fillText ("#3", 350, 50); // #4 context.shadowColor = 'hsl(120,50%,50%)'; context.fillText ("#4", 500, 50);
FillRectSample
var context = document.getElementById('FillRectSample').getContext('2d'); context.addGrid(); // 1. draw a filled rectangle in default black context.fillStyle = 'black'; // this line is actually superfluous, because 'black' is default context.fillRect(50,50,100,100); // draw the first rectangle // 2. draw a filled rectangle in redd context.fillStyle = 'red'; // change the fillStyle to the color 'red' context.fillRect(200,50,100,100); // draw the second rectangle // 3. draw a fancy rectangle with linear gradient var lg = context.createLinearGradient(350,50,450,150); // create a linear gradient lg.addColorStop(0,'yellow'); // start (=0) the gradient with 'yellow' lg.addColorStop(1,'red'); // finish (=1) the gradient with 'red' context.fillStyle = lg; // set the fillStyle to this new linear gradient context.fillRect(350,50,100,100); // draw the third rectangle
StrokeRectSample
var context = document.getElementById('StrokeRectSample').getContext('2d'); context.addGrid(); // 1. draw a rectangle with black strokes context.lineWidth = 1.0; // this is actually superfluous, because 1.0 is default context.strokeStyle = 'black'; // this is superfluous, too, because 'black' is default anyway context.strokeRect(50,50,100,100); // draw the first rectangle // 2. draw a rectangle with red strokes context.lineWidth = 7.0; // change the line width to 7.0 context.strokeStyle = 'red'; // change the strokeStyle to the color 'red' context.strokeRect(200,50,100,100); // draw the second rectangle // 3. draw a rectangle with strokes in gradient style context.lineWidth = 12.0; // increase the line width, once more var lg = context.createLinearGradient(350,50,450,150); // define a linear gradient lg.addColorStop(0,'yellow'); // start the gradient with the color 'yellow' lg.addColorStop(1,'red'); // let the gradient end with the color 'red' context.strokeStyle = lg; // set the strokeStyle to this new gradient context.strokeRect(350,50,100,100); // draw the third rectangle
ClearRectSample
var context = document.getElementById('ClearRectSample').getContext('2d'); context.addGrid(); // 1. fill the whole canvas area with a transparent green color context.fillStyle = 'rgba(0%,100%,0%,0.3)'; // green color with 0.3 transparency context.fillRect (0,0,300,200); // filled rectangle over the whole canvas area // 2. draw a yellow rectangular box context.lineWidth = 10.0; // set the line width to 10 context.strokeStyle = 'yellow'; // set the strokeStyle to the color 'yellow' context.strokeRect(25,25,100,100); // draw the yellow box // 3. cut out a rectangle from the canvas context.clearRect (100,50,200,150); // delete all content in this rectangle
DrawRectangle1
var context = document.getElementById('DrawRectangle1').getContext('2d'); context.fillStyle = 'rgba(255,0,0,0.5)'; // fill style is now set to a half transparent red color context.fillRect (80, 20, 100, 60); // draw the rectangle with left upper corner (80,20), width 100 and height 60
DrawRectangle3
var context = document.getElementById('DrawRectangle3').getContext('2d'); context.addGrid (20); context.lineWidth = 2.0; // first the red line context.strokeStyle = 'cyan'; context.beginPath(); context.moveTo (0, 0); context.lineTo (80, 20); context.stroke(); // then the black rectangle frame context.strokeStyle = 'black'; context.beginPath(); context.moveTo (80, 20); context.lineTo (180, 20); context.lineTo (180, 80); context.lineTo (80, 80); context.lineTo (80, 20); context.stroke(); // add some text context.fillStyle = 'black' context.fillText ('1.', 20, 25); context.fillText ('2.', 125, 15); context.fillText ('3.', 190, 60); context.fillText ('4.', 125, 95); context.fillText ('5.', 65, 60);
DrawRectangle4
var context = document.getElementById('DrawRectangle4').getContext('2d'); // set the style for the stroke() call below context.strokeStyle = 'rgba(255,0,0,0.5)'; // now: strokeStyle instead of fillStyle // the same path again as before: context.beginPath(); context.moveTo (80, 20); context.lineTo (180, 20); context.lineTo (180, 80); context.lineTo (80, 80); context.lineTo (80, 20); context.stroke(); // now: stroke() insted of fill() context.closePath();
ClosePathSample1
var context = document.getElementById('ClosePathSample1').getContext('2d'); context.addGrid(); context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo(150,25); // starting point at the top of the triangle context.lineTo(250,100); // line to right bottom corner context.lineTo(50,100); // line to left bottom corner context.stroke(); // draw the lines
ClosePathSample2
var context = document.getElementById('ClosePathSample2').getContext('2d'); context.addGrid(); context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo(150,25); // starting point at the top of the triangle context.lineTo(250,100); // line to right bottom corner context.lineTo(50,100); // line to left bottom corner context.closePath(); // closes the shape with a line from the left bottom to the initial top point context.stroke(); // draw the lines
ClosePathSample3
var context = document.getElementById('ClosePathSample3').getContext('2d'); context.addGrid(); context.fillStyle = 'red'; context.beginPath(); context.moveTo(150,25); context.lineTo(250,100); context.lineTo(50,100); context.closePath(); context.fill();
StrokeSample1
var context = document.getElementById('StrokeSample1').getContext('2d'); context.addGrid (); // settings for both shapes context.lineWidth = 10.0; // the first shape context.beginPath(); context.strokeStyle = 'lime'; context.moveTo (25, 25); context.lineTo (25, 125); context.lineTo (125, 125); context.stroke(); // the second shape context.beginPath(); context.strokeStyle = 'maroon'; context.moveTo (175, 25); context.lineTo (175, 125); context.lineTo (275, 125); context.stroke();
StrokeSample2
var context = document.getElementById('StrokeSample2').getContext('2d'); context.addGrid (); // settings for both lines context.lineWidth = 10.0; // the first shape context.beginPath(); context.strokeStyle = 'lime'; context.moveTo (25, 25); context.lineTo (25, 125); context.lineTo (125, 125); context.closePath(); context.stroke(); // the second shape context.beginPath(); context.strokeStyle = 'maroon'; context.moveTo (175, 25); context.lineTo (175, 125); context.lineTo (275, 125); context.closePath(); context.stroke();
FillSample1
var context = document.getElementById('FillSample1').getContext('2d'); context.addGrid (); // the first triangle context.fillStyle = 'lime'; // set the color for shapes subsequently drawn with fill() to 'lime' context.beginPath(); // start a new path context.moveTo (25, 25); // go to (25,25), which now becomes the current point in the path context.lineTo (25, 125); // add a line from (25,25) to (25,125); the latter is the new current point in the path context.lineTo (125, 125); // add another line from (25,125) to (125,125) to the path context.fill(); // the path is closed with a line from (125,125) to the initial (25,25) and // the shape area is now drawn with the fillStyle color 'lime' // the second triangle context.beginPath(); // start another path context.moveTo (175, 25); // go to (175,25) context.lineTo (175, 125); // add a line from (175,25) to (175,125) context.lineTo (275, 125); // add a line from (175,125) to (275,125) context.fillStyle = 'maroon'; // set the fillStyle to the color 'maroon' context.fill(); // close the path, making it a triangle, and draw the shape area in 'maroon' color
NonConvexShape0
var context = document.getElementById('NonConvexShape0').getContext('2d'); context.addGrid(); context.beginPath(); context.moveTo (50,25); context.lineTo (50,125); context.lineTo (150,25); context.lineTo (150,125); context.lineTo (250,25); context.lineTo (250,125); context.lineWidth = 2.0; context.strokeStyle = 'red'; context.stroke();
NonConvexShape1
var context = document.getElementById('NonConvexShape1').getContext('2d'); context.addGrid(); context.fillStyle = 'red'; context.fillRect(50,25,200,100);
NonConvexShape2
var context = document.getElementById('NonConvexShape2').getContext('2d'); context.addGrid(); context.beginPath(); context.moveTo (50,25); context.lineTo (50,125); context.lineTo (150,25); context.lineTo (150,125); context.lineTo (250,25); context.lineTo (250,125); context.fillStyle = 'red'; context.fill();
NonConvexShape3
var context = document.getElementById('NonConvexShape3').getContext('2d'); context.addGrid(); context.beginPath(); context.moveTo (50,25); context.lineTo (50,125); context.lineTo (150,25); context.lineTo (150,125); context.lineTo (250,25); context.lineTo (250,125); context.closePath(); context.lineWidth = 2.0; context.strokeStyle = 'red'; context.stroke();
LineToSample1
var context = document.getElementById('LineToSample1').getContext('2d'); context.addGrid(30); context.strokeStyle = 'navy'; // set the strokeStyle color to 'navy' (for the stroke() call below) context.lineWidth = 3.0; // set the line width to 3 pixels context.beginPath(); // start a new path context.moveTo (150,30); // set (150,20) to be the starting point context.lineTo (270,120); // line from (150,30) to (270,120) context.lineTo (30,120); // horizontal line from (270,120) to (30,120) context.lineTo (150,30); // line back to the starting point (we could have called closePath() instead) context.stroke(); // actually draw the triangle shape in 'navy' color and 3 pixel wide lines
LineToSample2
var context = document.getElementById('LineToSample2').getContext('2d'); context.addGrid(30); context.fillStyle = 'navy'; // set the fillStyle color to 'navy' (for the fill() call below) context.beginPath(); // start a new path context.moveTo (150,30); // set (150,20) to be the starting point context.lineTo (270,120); // line from (150,30) to (270,120) context.lineTo (30,120); // horizontal line from (270,120) to (30,120) context.fill(); // actually draw the triangle shape in 'navy' color and 3 pixel wide lines
MoveToSample1
var context = document.getElementById('MoveToSample1').getContext('2d'); context.addGrid(); // set the line style to be drawn with stroke() context.lineWidth = 9.0; context.strokeStyle = 'red'; // create the path context.beginPath(); context.moveTo (50,25); context.lineTo (50,75); // first vertical line context.moveTo (100,25); context.lineTo (100,75); // second vertical line context.moveTo (150,25); context.lineTo (150,75); // third vertical line context.stroke();
MoveToSample2
var context = document.getElementById('MoveToSample2').getContext('2d'); context.addGrid(); context.lineWidth = 9.0; context.strokeStyle = 'red'; context.beginPath(); context.lineTo (50,25); context.lineTo (50,75); context.lineTo (100,25); context.lineTo (100,75); context.lineTo (150,25); context.lineTo (150,75); context.stroke();
RectSample1
var context = document.getElementById ('RectSample1').getContext('2d'); context.addGrid(20); context.beginPath(); context.rect (20,60,60,60); context.moveTo (10,70); context.lineTo (50,10); context.lineTo (90,70); context.strokeStyle = "black"; context.lineWidth = 5.0; context.stroke();
RectSample2
var context = document.getElementById ('RectSample2').getContext('2d'); context.addGrid(20); context.beginPath(); context.rect (20,60,60,60); context.moveTo (10,70); context.lineTo (50,10); context.lineTo (90,70); var lg = context.createLinearGradient (20,20,100,130); // create a linear gradient named lg lg.addColorStop (0, 'yellow'); // set the color of lg at the beginning (=top) to 'yellow' lg.addColorStop (1, 'red'); // set the color of lg at the end (right bottom) to 'red' context.fillStyle = lg; // set the fillStyle to lg context.fill(); // paint the house according to the fillStyle settings
QuadraticCurveSample0
var context = document.getElementById('QuadraticCurveSample0').getContext('2d'); context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,120); context.quadraticCurveTo (210, 30, 210, 120); context.stroke();
QuadraticCurveSample1
var context = document.getElementById('QuadraticCurveSample1').getContext('2d'); context.addGrid(30); // text settings context.textBaseline = 'middle'; context.textAlign = 'center'; // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 30,120,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc(210, 30,3,0,2*Math.PI); context.fill(); // cp context.beginPath(); context.arc(210,120,3,0,2*Math.PI); context.fill(); // point 1 // dot text context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0', 30, 140); context.fillText ('1', 210, 140); context.fillText ('cp', 190, 25);
QuadraticCurveSample2
var context = document.getElementById('QuadraticCurveSample2').getContext('2d'); context.addGrid(30); // text settings context.textBaseline = 'middle'; context.textAlign = 'center'; // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 30,120,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc(210, 30,3,0,2*Math.PI); context.fill(); // cp context.beginPath(); context.arc(210,120,3,0,2*Math.PI); context.fill(); // point 1 // the lines context.strokeStyle = 'green'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (240,15); context.lineTo (0,135); context.moveTo (210,0); context.lineTo (210,150); context.stroke(); // dot text context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0', 30, 140); context.fillText ('1', 210, 140); context.fillText ('cp', 190, 25); // the curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,120); context.quadraticCurveTo (210, 30, 210, 120); context.stroke();
QuadraticCurveShape0
var context = document.getElementById('QuadraticCurveShape0').getContext('2d'); context.addGrid(); // the curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (150,25); context.quadraticCurveTo (275,25,275,75); context.quadraticCurveTo (275,125,150,125); context.quadraticCurveTo (25,125,25,75); context.quadraticCurveTo (25,25,150,25); context.stroke();
QuadraticCurveShape1
var context = document.getElementById('QuadraticCurveShape1').getContext('2d'); context.addGrid(); // the tangents context.lineWidth = 1.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (0,25); context.lineTo (300,25); // upper horizontal line context.moveTo (0,125); context.lineTo (300,125); // lower horizontal line context.moveTo (25,0); context.lineTo (25,150); // left vertical line context.moveTo (275,0); context.lineTo (275,150); // right vertical line context.stroke(); // the curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (150,25); context.quadraticCurveTo (275,25,275,75); context.quadraticCurveTo (275,125,150,125); context.quadraticCurveTo (25,125,25,75); context.quadraticCurveTo (25,25,150,25); context.stroke();
QuadraticCurveShape2
var context = document.getElementById('QuadraticCurveShape2').getContext('2d'); context.addGrid(); // the tangents context.lineWidth = 1.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (0,25); context.lineTo (300,25); // upper horizontal line context.moveTo (0,125); context.lineTo (300,125); // lower horizontal line context.moveTo (25,0); context.lineTo (25,150); // left vertical line context.moveTo (275,0); context.lineTo (275,150); // right vertical line context.stroke(); // the dots context.fillStyle = 'green'; var dotRadius = 5; context.beginPath(); context.arc(150, 25,dotRadius,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc(275, 25,dotRadius,0,2*Math.PI); context.fill(); // cp1 context.beginPath(); context.arc(275, 75,dotRadius,0,2*Math.PI); context.fill(); // point 1 // dot text context.textAlign = 'center'; context.textBaseline = 'middle'; context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0', 150, 13); context.fillText ('1', 290, 75); context.font = '8pt sans-serif'; context.fillText ('cp1', 290, 13); // the curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (150,25); context.quadraticCurveTo (275,25,275,75); context.stroke();
QuadraticCurveShape3
var context = document.getElementById('QuadraticCurveShape3').getContext('2d'); context.addGrid(); // the tangents context.lineWidth = 1.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (0,25); context.lineTo (300,25); // upper horizontal line context.moveTo (0,125); context.lineTo (300,125); // lower horizontal line context.moveTo (25,0); context.lineTo (25,150); // left vertical line context.moveTo (275,0); context.lineTo (275,150); // right vertical line context.stroke(); // the dots context.fillStyle = 'green'; var dotRadius = 5; context.beginPath(); context.arc(150, 25,dotRadius,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc(275, 75,dotRadius,0,2*Math.PI); context.fill(); // point 1 context.beginPath(); context.arc(150,125,dotRadius,0,2*Math.PI); context.fill(); // point 2 context.beginPath(); context.arc( 25, 75,dotRadius,0,2*Math.PI); context.fill(); // point 3 context.beginPath(); context.arc(275, 25,dotRadius,0,2*Math.PI); context.fill(); // cp1 context.beginPath(); context.arc(275,125,dotRadius,0,2*Math.PI); context.fill(); // cp2 context.beginPath(); context.arc( 25,125,dotRadius,0,2*Math.PI); context.fill(); // cp3 context.beginPath(); context.arc( 25, 25,dotRadius,0,2*Math.PI); context.fill(); // cp4 // dot text context.textAlign = 'center'; context.textBaseline = 'middle'; context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0',150, 13); context.fillText ('1',290, 75); context.fillText ('2',150,140); context.fillText ('3', 11, 75); context.font = '8pt sans-serif'; context.fillText ('cp1',288, 13); context.fillText ('cp2',288,138); context.fillText ('cp3', 13,138); context.fillText ('cp4', 13, 13); // the curve context.lineWidth = 5.0; // set the line width for the stroke() call below context.strokeStyle = 'red'; // set the color to 'red' for the stroke() call below context.beginPath(); // start the new path context.moveTo (150,25); // move to point 0 at (150,25) context.quadraticCurveTo (275,25,275,75); // curve from point 0 to point 1 at (275,75) context.quadraticCurveTo (275,125,150,125); // curve from point 1 to point 2 at (150,125) context.quadraticCurveTo (25,125,25,75); // curve from point 2 to point 3 at (25,75) context.quadraticCurveTo (25,25,150,25); // curve from point 3 back to point 0 context.stroke(); // draw the shape defined by the current path
EllipseWithQuadraticCurve
var context = document.getElementById('EllipseWithQuadraticCurve').getContext('2d'); context.addGrid(); // the curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (150,25); context.quadraticCurveTo (275, 25, 275, 75); context.quadraticCurveTo (275, 125, 150, 125); context.quadraticCurveTo ( 25, 125, 25, 75); context.quadraticCurveTo ( 25, 25, 150, 25); context.stroke();
EllipseWithBezierCurve
var context = document.getElementById('EllipseWithBezierCurve').getContext('2d'); context.addGrid(); // the curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (150,25); context.bezierCurveTo (275, 25, 275, 25, 275, 75); context.bezierCurveTo (275, 125, 275, 125, 150, 125); context.bezierCurveTo ( 25, 125, 25, 125, 25, 75); context.bezierCurveTo ( 25, 25, 25, 25, 150, 25); context.stroke();
BezierSample1
var context = document.getElementById('BezierSample1').getContext('2d'); context.addGrid(30); // text settings context.textBaseline = 'middle'; context.textAlign = 'center'; // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 30,120,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc(120, 30,3,0,2*Math.PI); context.fill(); // cp1 context.beginPath(); context.arc(240, 30,3,0,2*Math.PI); context.fill(); // cp2 context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // point 1 // the lines context.strokeStyle = 'green'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (0,150); context.lineTo (150,0); context.moveTo (240,0); context.lineTo (240,150); context.stroke(); // dot text context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0', 30, 140); context.fillText ('1', 260, 120); context.fillText ('cp1', 100, 25); context.fillText ('cp2', 270, 30); // the bezier curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,120); // go to point 0 at (30,120) context.bezierCurveTo (120, 30, 240, 30, 240, 120); // go to point 1 at (240,120) context.stroke();
BezierSample2
var context = document.getElementById('BezierSample2').getContext('2d'); context.addGrid(30); // text settings context.textBaseline = 'middle'; context.textAlign = 'center'; // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 30,120,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc(120, 30,3,0,2*Math.PI); context.fill(); // cp1 context.beginPath(); context.arc(240, 30,3,0,2*Math.PI); context.fill(); // cp2 context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // point 1 // the lines context.strokeStyle = 'green'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (0,150); context.lineTo (150,0); context.moveTo (240,0); context.lineTo (240,150); context.stroke(); // dot text context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0', 30, 140); context.fillText ('cp2', 265, 120); context.fillText ('cp1', 100, 25); context.fillText ('1', 260, 30); // the bezier curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,120); context.bezierCurveTo (120, 30, 240, 120, 240, 30); context.stroke();
BezierSample3
var context = document.getElementById('BezierSample3').getContext('2d'); context.addGrid(30); // text settings context.textBaseline = 'middle'; context.textAlign = 'center'; // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 30,120,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc( 90, 60,3,0,2*Math.PI); context.fill(); // cp1 context.beginPath(); context.arc(180, 90,3,0,2*Math.PI); context.fill(); // cp2 context.beginPath(); context.arc(120, 60,3,0,2*Math.PI); context.fill(); // point 1 // the lines context.strokeStyle = 'green'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (0,150); context.lineTo (150,0); context.moveTo (0,0); context.lineTo (300,150); context.stroke(); // dot text context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0', 30, 140); context.fillText ('cp2', 205, 90); context.fillText ('cp1', 60, 60); context.fillText ('1', 130, 55); // the bezier curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,120); context.bezierCurveTo (90, 60, 180, 90, 120, 60); context.stroke();
BezierSample1again
var context = document.getElementById('BezierSample1again').getContext('2d'); context.addGrid(30); // text settings context.textBaseline = 'middle'; context.textAlign = 'center'; // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 30,120,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc(120, 30,3,0,2*Math.PI); context.fill(); // cp1 context.beginPath(); context.arc(240, 30,3,0,2*Math.PI); context.fill(); // cp2 context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // point 1 // the lines context.strokeStyle = 'green'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (0,150); context.lineTo (150,0); context.moveTo (240,0); context.lineTo (240,150); context.stroke(); // dot text context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0', 30, 140); context.fillText ('1', 260, 120); context.fillText ('cp1', 100, 25); context.fillText ('cp2', 270, 30); // the bezier curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,120); // go to point 0 at (30,120) context.bezierCurveTo (120, 30, 240, 30, 240, 120); // go to point 1 at (240,120) context.stroke();
BezierSample4
var context = document.getElementById('BezierSample4').getContext('2d'); context.addGrid(30); // text settings context.textBaseline = 'middle'; context.textAlign = 'center'; // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 30,120,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc( 60, 90,3,0,2*Math.PI); context.fill(); // cp1 context.beginPath(); context.arc(240, 30,3,0,2*Math.PI); context.fill(); // cp2 context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // point 1 // the lines context.strokeStyle = 'green'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (0,150); context.lineTo (150,0); context.moveTo (240,0); context.lineTo (240,150); context.stroke(); // dot text context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0', 30, 140); context.fillText ('1', 260, 120); context.fillText ('cp1', 40, 90); context.fillText ('cp2', 270, 30); // the bezier curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,120); // go to point 0 at (30,120) context.bezierCurveTo (60, 90, 240, 30, 240, 120); // go to point 1 at (240,120) context.stroke();
BezierSample5
var context = document.getElementById('BezierSample5').getContext('2d'); context.addGrid(30); // text settings context.textBaseline = 'middle'; context.textAlign = 'center'; // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 30,120,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc( 60, 90,3,0,2*Math.PI); context.fill(); // cp1 context.beginPath(); context.arc(240, 90,3,0,2*Math.PI); context.fill(); // cp2 context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // point 1 // the lines context.strokeStyle = 'green'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (0,150); context.lineTo (150,0); context.moveTo (240,0); context.lineTo (240,150); context.stroke(); // dot text context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0', 30, 140); context.fillText ('1', 260, 120); context.fillText ('cp1', 40, 90); context.fillText ('cp2', 270, 90); // the bezier curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,120); // go to point 0 at (30,120) context.bezierCurveTo (60, 90, 240, 90, 240, 120); // go to point 1 at (240,120) context.stroke();
BezierSample6
var context = document.getElementById('BezierSample6').getContext('2d'); context.addGrid(30); // text settings context.textBaseline = 'middle'; context.textAlign = 'center'; // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 30,120,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc(240, 90,3,0,2*Math.PI); context.fill(); // cp2 context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // point 1 // the lines context.strokeStyle = 'green'; context.lineWidth = 1.0; context.beginPath(); context.moveTo (240,0); context.lineTo (240,150); context.stroke(); // dot text context.fillStyle = 'black'; context.font = '10pt sans-serif'; context.fillText ('0 = cp1', 30, 140); context.fillText ('1', 260, 120); context.fillText ('cp2', 270, 90); // the bezier curve context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,120); // go to point 0 at (30,120) context.bezierCurveTo (30, 120, 240, 90, 240, 120); // go to point 1 at (240,120) context.stroke();
BezierHart0
var context = document.getElementById('BezierHart0').getContext('2d'); context.addGrid(30); context.fillStyle = 'red'; context.beginPath(); context.moveTo (150,60); // start at point 0 context.bezierCurveTo (150,30, 100,30, 90,30); // from point 0 to point 1 context.bezierCurveTo (60,30,30,60,30,90); // from point 1 to point 2 context.bezierCurveTo (30,180,90,210,150,240); // from point 2 to point 3 context.bezierCurveTo (210,210,270,180,270,90); // from point 3 to point 4 context.bezierCurveTo (270,60,240,30,210,30); // from point 4 to point 5 context.bezierCurveTo (180,30,150,30,150,60); // from point 5 to point 0 context.fill();
BezierHart1
var context = document.getElementById('BezierHart1').getContext('2d'); context.addGrid(30); // the dots context.fillStyle = 'green'; context.beginPath(); context.arc(150, 60,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc( 90, 30,3,0,2*Math.PI); context.fill(); // point 1 context.beginPath(); context.arc( 30, 90,3,0,2*Math.PI); context.fill(); // point 2 context.beginPath(); context.arc(150,240,3,0,2*Math.PI); context.fill(); // point 3 context.beginPath(); context.arc(270, 90,3,0,2*Math.PI); context.fill(); // point 4 context.beginPath(); context.arc(210, 30,3,0,2*Math.PI); context.fill(); // point 5 // text context.textBaseline = 'middle'; context.textAlign = 'center'; context.fillStyle = 'black'; context.font = "12pt sans-serif"; context.fillText ('0',150,75); context.fillText ('1',90,15); context.fillText ('2',15,90); context.fillText ('3',150,255); context.fillText ('4',285,90); context.fillText ('5',210,15); // 1.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (150,60); // point0 context.lineTo (150,30); // cp1 context.moveTo (90,30); // point1 context.lineTo (120,30); // cp2 context.stroke(); // 1.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (150,60); // point0 context.bezierCurveTo (150,30, 100,30, 90,30); // cp1, cp2, point1 context.stroke(); // 2.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo(90,30); // point1 context.lineTo(60,30); // cp3 context.moveTo(30,90);// point2 context.lineTo(30,60); // cp4 context.stroke(); // 2.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (90,30); // point1 context.bezierCurveTo (60,30,30,60,30,90); // cp3, cp4, point2 context.stroke(); // 3.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo(30,90); // point2 context.lineTo(30,180); // cp5 context.moveTo(150,240);// point3 context.lineTo(90,210); // cp6 context.stroke(); // 3.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,90); // point2 context.bezierCurveTo (30,180,90,210,150,240); // cp5, cp6, point3 context.stroke(); // 4.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo(150,240); // point3 context.lineTo(210,210); // cp7 context.moveTo(270,90);// point4 context.lineTo(270,180); // cp8 context.stroke(); // 4.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (150,240); // point3 context.bezierCurveTo (210,210,270,180,270,90); // cp7, cp8, point4 context.stroke(); // 5.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo(270,90); // point4 context.lineTo(270,60); // cp9 context.moveTo(210,30);// point5 context.lineTo(240,30); // cp10 context.stroke(); // 5.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (270,90); // point4 context.bezierCurveTo (270,60,240,30,210,30); // cp9, cp10, point5 context.stroke(); // 6.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo(210,30); // point5 context.lineTo(180,30); // cp11 context.moveTo(150,60);// point0 context.lineTo(150,30); // cp12 context.stroke(); // 6.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (210,30); // point5 context.bezierCurveTo (180,30,150,30,150,60); // cp11, cp12, point0 context.stroke();
BezierHart2
var context = document.getElementById('BezierHart2').getContext('2d'); context.addGrid(30); // the dots context.fillStyle = 'green'; context.beginPath(); context.arc(150, 60,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc( 90, 30,3,0,2*Math.PI); context.fill(); // point 1 // text context.textBaseline = 'middle'; context.textAlign = 'center'; context.fillStyle = 'black'; context.font = "12pt sans-serif"; context.fillText ('0',150,75); context.fillText ('1',90,15); // 1.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (150,60); // point0 context.lineTo (150,30); // cp1 context.moveTo (90,30); // point1 context.lineTo (120,30); // cp2 context.stroke(); // 1.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (150,60); // point0 context.bezierCurveTo (150,30, 100,30, 90,30); // cp1, cp2, point1 context.stroke(); // the command text context.fillStyle = 'black'; context.font = "10pt monospace"; context.textAlign = 'left'; context.fillText ( 'moveTo(150,60); // start at point 0',10,150 ); context.fillText ( 'bezierCurveTo(150,30,100,30,90,30);',10,180);
BezierHart3
var context = document.getElementById('BezierHart3').getContext('2d'); context.addGrid(30); // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 90, 30,3,0,2*Math.PI); context.fill(); // point 1 context.beginPath(); context.arc( 30, 90,3,0,2*Math.PI); context.fill(); // point 2 // text context.textBaseline = 'middle'; context.textAlign = 'center'; context.fillStyle = 'black'; context.font = "12pt sans-serif"; context.fillText ('1',90,15); context.fillText ('2',15,90); // 2.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo(90,30); // point1 context.lineTo(60,30); // cp3 context.moveTo(30,90);// point2 context.lineTo(30,60); // cp4 context.stroke(); // 2.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (90,30); // point1 context.bezierCurveTo (60,30,30,60,30,90); // cp3, cp4, point2 context.stroke(); // the command text context.fillStyle = 'black'; context.font = "10pt monospace"; context.textAlign = 'left'; context.fillText ( 'bezierCurveTo(60,30,30,60,30,90);',10,180);
BezierHart4
var context = document.getElementById('BezierHart4').getContext('2d'); context.addGrid(30); // the dots context.fillStyle = 'green'; context.beginPath(); context.arc( 30, 90,3,0,2*Math.PI); context.fill(); // point 2 context.beginPath(); context.arc(150,240,3,0,2*Math.PI); context.fill(); // point 3 // text context.textBaseline = 'middle'; context.textAlign = 'center'; context.fillStyle = 'black'; context.font = "12pt sans-serif"; context.fillText ('2',15,90); context.fillText ('3',150,255); // 3.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo(30,90); // point2 context.lineTo(30,180); // cp5 context.moveTo(150,240);// point3 context.lineTo(90,210); // cp6 context.stroke(); // 3.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (30,90); // point2 context.bezierCurveTo (30,180,90,210,150,240); // cp5, cp6, point3 context.stroke(); // the command text context.fillStyle = 'black'; context.font = "10pt monospace"; context.textAlign = 'left'; context.fillText ( 'bezierCurveTo(30,180,90,210,150,240);',10,45);
BezierHart5
var context = document.getElementById('BezierHart5').getContext('2d'); context.addGrid(30); // the dots context.fillStyle = 'green'; context.beginPath(); context.arc(150,240,3,0,2*Math.PI); context.fill(); // point 3 context.beginPath(); context.arc(270, 90,3,0,2*Math.PI); context.fill(); // point 4 // text context.textBaseline = 'middle'; context.textAlign = 'center'; context.fillStyle = 'black'; context.font = "12pt sans-serif"; context.fillText ('3',150,255); context.fillText ('4',285,90); // 4.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo(150,240); // point3 context.lineTo(210,210); // cp7 context.moveTo(270,90);// point4 context.lineTo(270,180); // cp8 context.stroke(); // 4.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (150,240); // point3 context.bezierCurveTo (210,210,270,180,270,90); // cp7, cp8, point4 context.stroke(); // the command text context.fillStyle = 'black'; context.font = "10pt monospace"; context.textAlign = 'left'; context.fillText ( 'bezierCurveTo(210,210,270,180,270,90);',3,45);
BezierHart6
var context = document.getElementById('BezierHart6').getContext('2d'); context.addGrid(30); // the dots context.fillStyle = 'green'; context.beginPath(); context.arc(270, 90,3,0,2*Math.PI); context.fill(); // point 4 context.beginPath(); context.arc(210, 30,3,0,2*Math.PI); context.fill(); // point 5 // text context.textBaseline = 'middle'; context.textAlign = 'center'; context.fillStyle = 'black'; context.font = "12pt sans-serif"; context.fillText ('4',285,90); context.fillText ('5',210,15); // 5.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo(270,90); // point4 context.lineTo(270,60); // cp9 context.moveTo(210,30);// point5 context.lineTo(240,30); // cp10 context.stroke(); // 5.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (270,90); // point4 context.bezierCurveTo (270,60,240,30,210,30); // cp9, cp10, point5 context.stroke(); // the command text context.fillStyle = 'black'; context.font = "10pt monospace"; context.textAlign = 'left'; context.fillText ( 'bezierCurveTo(270,60,240,30,210,30);',10,165);
BezierHart7
var context = document.getElementById('BezierHart7').getContext('2d'); context.addGrid(30); // the dots context.fillStyle = 'green'; context.beginPath(); context.arc(150, 60,3,0,2*Math.PI); context.fill(); // point 0 context.beginPath(); context.arc(210, 30,3,0,2*Math.PI); context.fill(); // point 5 // text context.textBaseline = 'middle'; context.textAlign = 'center'; context.fillStyle = 'black'; context.font = "12pt sans-serif"; context.fillText ('0',150,75); context.fillText ('5',210,15); // 6.a) the tangents context.lineWidth = 2.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo(210,30); // point5 context.lineTo(180,30); // cp11 context.moveTo(150,60);// point0 context.lineTo(150,30); // cp12 context.stroke(); // 6.b) the red curve context.lineWidth = 1.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (210,30); // point5 context.bezierCurveTo (180,30,150,30,150,60); // cp11, cp12, point0 context.stroke(); // the command text context.fillStyle = 'black'; context.font = "10pt monospace"; context.textAlign = 'left'; context.fillText ( 'bezierCurveTo(180,30,150,30,150,60);',10,165);
ArcSample1
var context = document.getElementById('ArcSample1').getContext('2d'); context.fillStyle = "rgba(255,0,0,0.33)"; // red color with 1/3 transparency // now draw five filled circle pieces: context.beginPath(); context.arc ( 60, 60, 50, 0, 2 * Math.PI, false); context.fill(); // 1st context.beginPath(); context.arc (180, 60, 50, 0, Math.PI, false); context.fill(); // 2nd context.beginPath(); context.arc (300, 60, 50, 0, Math.PI, true ); context.fill(); // 3rd context.beginPath(); context.arc (420, 60, 50, 2, 6, false); context.fill(); // 4th context.beginPath(); context.arc (540, 60, 50, 2, 6, true ); context.fill(); // 5th
ArcSample2
var context = document.getElementById('ArcSample2').getContext('2d'); context.strokeStyle = "rgba(255,0,0,0.33)"; // red color with 1/3 transparency // now draw five filled circle pieces: context.beginPath(); context.arc ( 60, 60, 50, 0, 2 * Math.PI, false); context.stroke(); // 1st context.beginPath(); context.arc (180, 60, 50, 0, Math.PI, false); context.stroke(); // 2nd context.beginPath(); context.arc (300, 60, 50, 0, Math.PI, true ); context.stroke(); // 3rd context.beginPath(); context.arc (420, 60, 50, 2, 6, false); context.stroke(); // 4th context.beginPath(); context.arc (540, 60, 50, 2, 6, true ); context.stroke(); // 5th
ArcSample3
var context = document.getElementById('ArcSample3').getContext('2d'); context.addGrid (30); context.fillStyle = "rgba(255,0,0,0.33)"; // red color with 1/3 transparency // now draw five filled circle pieces: context.beginPath(); context.arc ( 60, 60, 50, 0, 2 * Math.PI, false); context.fill(); // 1st context.beginPath(); context.arc (180, 60, 50, 0, Math.PI, false); context.fill(); // 2nd context.beginPath(); context.arc (300, 60, 50, 0, Math.PI, true ); context.fill(); // 3rd context.beginPath(); context.arc (420, 60, 50, 2, 6, false); context.fill(); // 4th context.beginPath(); context.arc (540, 60, 50, 2, 6, true ); context.fill(); // 5th // text context.fillStyle = 'black'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '12pt sans-serif'; context.fillText ('1st', 60, 130); context.fillText ('2nd', 180, 130); context.fillText ('3rd', 300, 130); context.fillText ('4th', 420, 130); context.fillText ('5th', 540, 130); // add the five center points: context.fillStyle = "red"; context.beginPath(); context.arc ( 60, 60, 3, 0, 2 * Math.PI); context.fill(); // 1st context.beginPath(); context.arc (180, 60, 3, 0, 2 * Math.PI); context.fill(); // 2nd context.beginPath(); context.arc (300, 60, 3, 0, 2 * Math.PI); context.fill(); // 3rd context.beginPath(); context.arc (420, 60, 3, 0, 2 * Math.PI); context.fill(); // 4th context.beginPath(); context.arc (540, 60, 3, 0, 2 * Math.PI); context.fill(); // 5th
ArcExplained1
var context = document.getElementById('ArcExplained1').getContext('2d'); context.addGrid (20); context.fillStyle = "rgba(255,0,0,0.2)"; context.beginPath(); context.arc ( 80, 80, 60, 0, 2 * Math.PI, false); context.fill(); context.fillStyle = 'black'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '8pt sans-serif'; context.fillText ('(x,y)', 80, 100); context.fillText ('r', 110, 70); context.fillText ('(x,y) = (80,80) and r = 60', 80, 12); context.fillStyle = "red"; context.beginPath(); context.arc ( 80, 80, 3, 0, 2 * Math.PI); context.fill(); context.strokeStyle = "red"; context.lineWidth = 3; context.beginPath(); context.moveTo (80, 80); context.lineTo (140, 80); context.stroke();
ArcExplained2
var context = document.getElementById('ArcExplained2').getContext('2d'); context.fillStyle = "rgba(255,0,0,0.2)"; context.beginPath(); context.arc ( 80, 80, 60, 0, 2 * Math.PI, false); context.fill(); context.fillStyle = 'black'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '8pt sans-serif'; context.fillText ('0', 150, 80); context.fillText ('a', 120, 140); context.fillStyle = "red"; context.beginPath(); context.arc ( 80, 80, 3, 0, 2 * Math.PI); context.fill(); context.strokeStyle = "red"; context.lineWidth = 3; context.beginPath(); context.moveTo (80, 80); context.lineTo (140, 80); context.moveTo (80, 80); context.lineTo (60 * Math.cos(1) + 80, 60 * Math.sin(1) + 80); context.stroke(); context.beginPath(); context.arc (80, 80, 60, 0, 1); context.stroke();
ArcExplained3
var context = document.getElementById('ArcExplained3').getContext('2d'); context.fillStyle = "rgba(255,0,0,0.2)"; context.beginPath(); context.arc ( 80, 80, 60, 0, 2 * Math.PI, false); context.fill(); context.fillStyle = 'black'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '8pt sans-serif'; context.fillText ('0', 150, 80); context.fillText ('1r', 120, 140); context.fillText ('2r', 50, 145); context.fillText ('3r', 10, 90); context.fillText ('4r', 30, 30); context.fillText ('5r', 100, 15); context.fillText ('6r', 147, 60); context.strokeStyle = "red"; context.lineWidth = 3; context.beginPath(); context.arc (80, 80, 60, 0, 2 * Math.PI); context.stroke(); context.beginPath(); context.moveTo (80, 80); context.lineTo (140, 80); context.stroke(); context.beginPath(); context.moveTo (80, 80); context.lineTo (60 * Math.cos(1) + 80, 60 * Math.sin(1) + 80); context.stroke(); context.beginPath(); context.moveTo (80, 80); context.lineTo (60 * Math.cos(2) + 80, 60 * Math.sin(2) + 80); context.stroke(); context.beginPath(); context.moveTo (80, 80); context.lineTo (60 * Math.cos(3) + 80, 60 * Math.sin(3) + 80); context.stroke(); context.beginPath(); context.moveTo (80, 80); context.lineTo (60 * Math.cos(4) + 80, 60 * Math.sin(4) + 80); context.stroke(); context.beginPath(); context.moveTo (80, 80); context.lineTo (60 * Math.cos(5) + 80, 60 * Math.sin(5) + 80); context.stroke(); context.beginPath(); context.moveTo (80, 80); context.lineTo (60 * Math.cos(6) + 80, 60 * Math.sin(6) + 80); context.stroke();
ArcExplained4
var context = document.getElementById('ArcExplained4').getContext('2d'); context.fillStyle = "rgba(255,0,0,0.2)"; context.beginPath(); context.arc ( 80, 80, 60, 0, 2*Math.PI, false); context.fill(); context.fillStyle = 'black'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '8pt sans-serif'; context.fillText ('2r', 50, 145); context.fillText ('6r', 147, 60); context.strokeStyle = "red"; context.lineWidth = 3; context.beginPath(); context.arc (80, 80, 60, 0, 2*Math.PI); context.stroke(); context.beginPath(); context.moveTo (80, 80); context.lineTo (60 * Math.cos(2) + 80, 60 * Math.sin(2) + 80); context.stroke(); context.beginPath(); context.moveTo (80, 80); context.lineTo (60 * Math.cos(6) + 80, 60 * Math.sin(6) + 80); context.stroke();
ArcExplained4filled
var context = document.getElementById('ArcExplained4filled').getContext('2d'); context.fillStyle = "rgba(255,0,0,0.33)"; context.beginPath(); context.arc ( 80, 80, 60, 2, 6, false); context.fill(); context.fillStyle = 'black'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '8pt sans-serif'; context.fillText ('arc() drawn with fill()', 80, 150); context.strokeStyle = "red"; context.lineWidth = 3;
ArcExplained4stroke
var context = document.getElementById('ArcExplained4stroke').getContext('2d'); context.fillStyle = "rgba(255,0,0,0.33)"; context.fillStyle = 'black'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '8pt sans-serif'; context.fillText ('arc() drawn with stroke()', 80, 150); context.strokeStyle = "rgba(255,0,0,0.2)"; context.lineWidth = 3; context.beginPath(); context.arc (80, 80, 60, 2, 6); context.stroke();
ArcExplained5filled
var context = document.getElementById('ArcExplained5filled').getContext('2d'); context.fillStyle = "rgba(255,0,0,0.33)"; context.beginPath(); context.arc ( 80, 80, 60, 2, 6, true); context.fill(); context.fillStyle = 'black'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '8pt sans-serif'; context.fillText ('arc() drawn with fill()', 80, 20);
ArcExplained5stroke
var context = document.getElementById('ArcExplained5stroke').getContext('2d'); context.fillStyle = "rgba(255,0,0,0.33)"; context.fillStyle = 'black'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '8pt sans-serif'; context.fillText ('arc() drawn with stroke()', 80, 20); context.strokeStyle = "rgba(255,0,0,0.2)"; context.lineWidth = 3; context.beginPath(); context.arc (80, 80, 60, 2, 6, true); context.stroke();
ArcExplained6deg
var context = document.getElementById('ArcExplained6deg').getContext('2d'); // the half transparent disk context.fillStyle = "rgba(255,0,0,0.2)"; context.beginPath(); context.arc ( 100, 80, 60, 0, 2 * Math.PI, false); context.fill(); // the angles context.strokeStyle = "red"; context.lineWidth = 3; context.beginPath(); context.arc (100, 80, 60, 0, 2 * Math.PI); context.moveTo (40, 80); context.lineTo (160, 80); context.moveTo (100, 20); context.lineTo (100, 140); context.stroke(); // text context.fillStyle = 'black'; context.font = '12pt sans-serif'; context.fillText ('degree', 10, 12); context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '6pt sans-serif'; context.fillText ('0=360', 180, 80); context.fillText ('90', 100, 150); context.fillText ('180', 25, 80); context.fillText ('270', 100, 10);
ArcExplained6pi
var context = document.getElementById('ArcExplained6pi').getContext('2d'); // the half transparent disk context.fillStyle = "rgba(255,0,0,0.2)"; context.beginPath(); context.arc ( 100, 80, 60, 0, 2 * Math.PI, false); context.fill(); // the angles context.strokeStyle = "red"; context.lineWidth = 3; context.beginPath(); context.arc (100, 80, 60, 0, 2 * Math.PI); context.moveTo (40, 80); context.lineTo (160, 80); context.moveTo (100, 20); context.lineTo (100, 140); context.stroke(); // text context.fillStyle = 'black'; context.font = '12pt sans-serif'; context.fillText ('radian', 10, 12); context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '6pt sans-serif'; context.fillText ('0=2*Math.PI', 190, 80); context.fillText ('0.5*Math.PI', 100, 150); context.fillText ('Math.PI', 20, 80); context.fillText ('1.5*Math.PI', 100, 10);
ArcExplained7
var context = document.getElementById('ArcExplained7').getContext('2d'); context.addGrid (20); context.fillStyle = "rgba(255,0,0,0.2)"; context.beginPath(); context.arc ( 80, 80, 60, 0, 2 * Math.PI, false); context.fill(); context.fillStyle = 'black'; context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '8pt sans-serif'; context.fillStyle = "red"; context.beginPath(); context.arc ( 80, 80, 3, 0, 2 * Math.PI); context.fill(); context.strokeStyle = "red"; context.lineWidth = 3; context.beginPath(); context.moveTo (80, 80); context.lineTo (140, 80); context.moveTo (80, 80); context.lineTo (60 * Math.cos (3/4 * Math.PI) + 80, 60 * Math.sin (3/4 * Math.PI) + 80); context.stroke(); context.fillStyle = "black"; context.beginPath(); context.arc (60 * Math.cos (3/4 * Math.PI) + 80, 60 * Math.sin (3/4 * Math.PI) + 80, 3, 0, 2 * Math.PI); context.fill();
ArcWithInitLine
var context = document.getElementById('ArcWithInitLine').getContext('2d'); context.addGrid(30); context.lineWidth = 3.0; context.strokeStyle = "red"; context.beginPath (); context.moveTo (30, 90); context.arc (210, 90, 60, 2, 6); context.lineTo (390, 90); context.stroke();
ArcSample2again
var context = document.getElementById('ArcSample2again').getContext('2d'); context.strokeStyle = "rgba(255,0,0,0.33)"; // red color with 1/3 transparency // now draw five filled circle pieces: context.beginPath(); context.arc ( 60, 60, 50, 0, 2 * Math.PI, false); context.stroke(); // 1st context.beginPath(); context.arc (180, 60, 50, 0, Math.PI, false); context.stroke(); // 2nd context.beginPath(); context.arc (300, 60, 50, 0, Math.PI, true ); context.stroke(); // 3rd context.beginPath(); context.arc (420, 60, 50, 2, 6, false); context.stroke(); // 4th context.beginPath(); context.arc (540, 60, 50, 2, 6, true ); context.stroke(); // 5th
ArcSample1singlePath
var context = document.getElementById('ArcSample1singlePath').getContext('2d'); context.strokeStyle = "rgba(255,0,0,0.33)"; // red color with 1/3 transparency context.beginPath(); context.arc ( 60, 60, 50, 0, 2 * Math.PI, false); // 1st context.arc (180, 60, 50, 0, Math.PI, false); // 2nd context.arc (300, 60, 50, 0, Math.PI, true ); // 3rd context.arc (420, 60, 50, 2, 5, false); // 4th context.arc (540, 60, 50, 2, 5, true ); // 5th context.stroke();
ArcSample00singlePath
var context = document.getElementById('ArcSample00singlePath').getContext('2d'); context.addGrid (30); context.fillStyle = "rgba(255,0,0,0.33)"; context.beginPath(); context.arc (120, 60, 50, 2, 5, true); context.fill();
ArcSample01singlePath
var context = document.getElementById('ArcSample01singlePath').getContext('2d'); context.addGrid (30); context.fillStyle = "rgba(255,0,0,0.33)"; context.beginPath(); context.moveTo (30,25); context.arc (120, 60, 50, 2, 5, true); context.lineTo (30,100); context.fill();
ArcSample02singlePath
var context = document.getElementById('ArcSample02singlePath').getContext('2d'); context.addGrid (30); context.lineWidth = 3.0; context.strokeStyle = "rgba(255,0,0,0.33)"; context.beginPath(); context.moveTo (30,25); context.arc (120, 60, 50, 2, 5, true); context.lineTo (30,100); context.stroke();
ArcToSample0
var context = document.getElementById('ArcToSample0').getContext('2d'); //context.addGrid(30); // draw the arc context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (60, 120); // makes (x0,y0)=(60,120) the current point context.arcTo (150, 30, 240, 120, 50); // arcTo() with points (x1,y1)=(150,30) and (x2,y2)=(240,120) and radius 50 context.stroke();
ArcToSample0points
var context = document.getElementById('ArcToSample0points').getContext('2d'); context.addGrid(30); // draw the points context.fillStyle = 'green'; context.beginPath(); context.arc(60,120,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(150,30,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // text context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '16pt sans-serif'; context.fillStyle = 'black'; context.fillText ('0', 45, 105); context.fillText ('1', 150, 15); context.fillText ('2', 255, 105);
ArcToSample0lines
var context = document.getElementById('ArcToSample0lines').getContext('2d'); context.addGrid(30); // draw the points context.fillStyle = 'green'; context.beginPath(); context.arc(60,120,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(150,30,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // draw the two tangents context.lineWidth = 1.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (30,150); context.lineTo (150, 30); context.lineTo (270,150); context.stroke(); // text context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '16pt sans-serif'; context.fillStyle = 'black'; context.fillText ('0', 45, 105); context.fillText ('1', 150, 15); context.fillText ('2', 255, 105);
ArcToSample0explained
var context = document.getElementById('ArcToSample0explained').getContext('2d'); context.addGrid(30); // draw the points context.fillStyle = 'green'; context.beginPath(); context.arc(60,120,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(150,30,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // draw the two tangents context.lineWidth = 1.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (30,150); context.lineTo (150, 30); context.lineTo (270,150); context.stroke(); // text context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '16pt sans-serif'; context.fillStyle = 'black'; context.fillText ('0', 45, 105); context.fillText ('1', 150, 15); context.fillText ('2', 255, 105); // draw the arc context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (60, 120); context.arcTo (150, 30, 240, 120, 50); context.stroke();
ArcToSample0Radius50
var context = document.getElementById('ArcToSample0Radius50').getContext('2d'); //context.addGrid(30); // draw the points context.fillStyle = 'green'; context.beginPath(); context.arc(60,120,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(150,30,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // draw the two tangents context.lineWidth = 1.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (30,150); context.lineTo (150, 30); context.lineTo (270,150); context.stroke(); // text context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '16pt sans-serif'; context.fillStyle = 'black'; context.fillText ('0', 45, 105); context.fillText ('1', 150, 15); context.fillText ('2', 255, 105); context.textAlign = 'left'; context.font = '10pt sans-serif'; context.fillText ('radius = 50', 10, 15); // draw the arc context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (60, 120); context.arcTo (150, 30, 240, 120, 50); context.stroke();
ArcToSample0Radius20
var context = document.getElementById('ArcToSample0Radius20').getContext('2d'); //context.addGrid(30); // draw the points context.fillStyle = 'green'; context.beginPath(); context.arc(60,120,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(150,30,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // draw the two tangents context.lineWidth = 1.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (30,150); context.lineTo (150, 30); context.lineTo (270,150); context.stroke(); // text context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '16pt sans-serif'; context.fillStyle = 'black'; context.fillText ('0', 45, 105); context.fillText ('1', 150, 15); context.fillText ('2', 255, 105); context.textAlign = 'left'; context.font = '10pt sans-serif'; context.fillText ('radius = 20', 10, 15); // draw the arc context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (60, 120); context.arcTo (150, 30, 240, 120, 20); context.stroke();
ArcToSample0Radius150
var context = document.getElementById('ArcToSample0Radius150').getContext('2d'); //context.addGrid(30); // draw the points context.fillStyle = 'green'; context.beginPath(); context.arc(60,120,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(150,30,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // draw the two tangents context.lineWidth = 1.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (30,150); context.lineTo (150, 30); context.lineTo (270,150); context.stroke(); // text context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '16pt sans-serif'; context.fillStyle = 'black'; context.fillText ('0', 45, 105); context.fillText ('1', 150, 15); context.fillText ('2', 255, 105); context.textAlign = 'left'; context.font = '10pt sans-serif'; context.fillText ('radius = 150', 10, 15); // draw the arc context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (60, 120); context.arcTo (150, 30, 240, 120, 150); context.stroke();
ArcToSample0Radius250
var context = document.getElementById('ArcToSample0Radius250').getContext('2d'); //context.addGrid(30); // draw the points context.fillStyle = 'green'; context.beginPath(); context.arc(60,120,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(150,30,3,0,2*Math.PI); context.fill(); context.beginPath(); context.arc(240,120,3,0,2*Math.PI); context.fill(); // draw the two tangents context.lineWidth = 1.0; context.strokeStyle = 'green'; context.beginPath(); context.moveTo (30,150); context.lineTo (150, 30); context.lineTo (270,150); context.stroke(); // text context.textAlign = 'center'; context.textBaseline = 'middle'; context.font = '16pt sans-serif'; context.fillStyle = 'black'; context.fillText ('0', 45, 105); context.fillText ('1', 150, 15); context.fillText ('2', 255, 105); context.textAlign = 'left'; context.font = '10pt sans-serif'; context.fillText ('radius = 250', 10, 15); // draw the arc context.lineWidth = 5.0; context.strokeStyle = 'red'; context.beginPath(); context.moveTo (60, 120); context.arcTo (150, 30, 240, 120, 250); context.stroke();
ClipSample1a
var context = document.getElementById('ClipSample1a').getContext('2d'); context.addGrid(30); // draw a rectangle with text context.fillStyle = 'aqua'; context.fillRect (30, 60, 180, 60); context.fillStyle = 'red'; context.font = '60px sans-serif'; context.fillText ('Hello!', 30, 110);
ClipSample1b
var context = document.getElementById('ClipSample1b').getContext('2d'); context.addGrid(30); // clipped circle area context.fillStyle = 'yellow'; context.beginPath(); context.arc (60, 60, 60, 0, 2*Math.PI); context.fill();
ClipSample1
var context = document.getElementById('ClipSample1').getContext('2d'); context.addGrid(30); // 1. clipped circle area context.fillStyle = 'yellow'; context.beginPath(); context.arc (60, 60, 60, 0, 2*Math.PI); context.fill(); // 2. clip context.clip(); // 3. draw a rectangle with text context.fillStyle = 'aqua'; context.fillRect (30, 60, 180, 60); context.fillStyle = 'red'; context.font = '60px sans-serif'; context.fillText ('Hello!', 30, 110);
ClipSample2
var context = document.getElementById('ClipSample2').getContext('2d'); context.addGrid(30); context.lineWidth = 3.0; // clipped circle area context.strokeStyle = 'yellow'; context.beginPath(); context.arc (60, 60, 60, 0, 2*Math.PI); context.stroke(); // clip context.clip(); // draw a rectangle with text context.strokeStyle = 'aqua'; context.strokeRect (30, 60, 180, 60); context.strokeStyle = 'red'; context.font = '60px sans-serif'; context.strokeText ('Hello!', 30, 110);
ClipSample3
var context = document.getElementById('ClipSample3').getContext('2d'); context.addGrid(30); // clipped circle area context.beginPath(); context.arc (60, 60, 60, 0, 2*Math.PI); context.fill(); // clip context.clip(); // insert the image var image = new Image(); image.src = "horse.jpg"; context.drawImage (image, 0, 0, 120, 120);
IsPointInPathSample1
var context = document.getElementById('IsPointInPathSample1').getContext('2d'); context.addGrid(); // add a new path context.beginPath(); context.moveTo (75,130); // make (75,130) the current point context.lineTo (145,75); // line from (75,130) to (145,75) context.arc (75,75,70,0,Math.PI,true); // draw half circle disk with center (75,75), radius 70 and counterclockwise context.lineTo (75,130); // line from (5,70) to (75,130) context.lineWidth = 3.0; // set the line width for the stroke drawing context.strokeStyle = 'purple'; // set the line color for the stroke drawing context.stroke(); // draw the shape // determine the position of two points var answer1 = context.isPointInPath (25,100); // answer1 is now either true or false var answer2 = context.isPointInPath (100,25); // answer2 is also either true or false // print out the result on the canvas context.font = "14pt sans-serif"; // set the font for the text context.fillText ( "isPointInPath(25,100) is " + answer1, 200, 50); // print the first line of text context.fillText ( "isPointInPath(100,25) is " + answer2, 200, 100); // print the second line of text
TextSample0
var canvas = document.getElementById ('TextSample0'); var context = canvas.getContext ('2d'); context.addGrid (20); // set both the strokeStyle and the fillStyle to black context.strokeStyle = 'black'; context.fillStyle = 'black'; // first line of text in the default font: context.strokeText(context.font, 10, 20); context.fillText (context.font, 350, 20); // second line of text: context.font = '20px fantasy'; context.strokeText(context.font, 10, 40); context.fillText (context.font, 350, 40); // third line of text: context.font = '40px Verdana'; context.strokeText(context.font, 10, 80); context.fillText (context.font, 350, 80); // fourth line of text: context.font = '60px Arial'; context.strokeText(context.font, 10, 140); context.fillText (context.font, 350, 140);
TextAlignLeftSample
var canvas = document.getElementById('TextAlignLeftSample'); var context = canvas.getContext('2d'); context.addGrid (20) context.font = '20px monospace'; context.textAlign = 'left'; context.fillText ("Hello world!", 300, 30);
TextAlignRightSample
var canvas = document.getElementById('TextAlignRightSample'); var context = canvas.getContext('2d'); context.addGrid (20) context.font = '20px monospace'; context.textAlign = 'right'; context.fillText ("Hello world!", 300, 30);
TextAlignCenterSample
var canvas = document.getElementById('TextAlignCenterSample'); var context = canvas.getContext('2d'); context.addGrid (20) context.font = '20px monospace'; context.textAlign = 'center'; context.fillText ("Hello world!", 300, 30);
TextBaselineSample
var context = document.getElementById('TextBaselineSample').getContext('2d'); context.addGrid (50); context.font = '20px monospace'; context.textBaseline = 'top'; context.fillText ( "top", 0, 50); context.textBaseline = 'hanging'; context.fillText ( "hanging", 100, 50); context.textBaseline = 'middle'; context.fillText ( "middle", 200, 50); context.textBaseline = 'alphabetic'; context.fillText ( "alphabetic", 300, 50); context.textBaseline = 'ideographic'; context.fillText ( "ideographic", 450, 50); context.textBaseline = 'bottom'; context.fillText ( "bottom", 600, 50);
FillTextSample
var context = document.getElementById('FillTextSample').getContext('2d'); context.addGrid (50); context.fillStyle = 'black'; // explicitly sets the text color to (default) 'black' context.font = '50px monospace'; context.fillText ("Hello world!", 0, 50); context.fillText ("This is a longer string that is limited to 750 pixel.", 0, 100, 750); context.fillText ("This is a longer string that is limited to 300 pixel.", 0, 150, 300);
StrokeTextSample
var context = document.getElementById('StrokeTextSample').getContext('2d'); context.addGrid (50); context.strokeStyle = 'black'; // explicitly sets the text color to (default) 'black' context.lineWidth = 2.0; // double of the default lineWidth context.font = '50px monospace'; context.strokeText ("Hello world!", 0, 50); context.strokeText ("This is a longer string that is limited to 750 pixel.", 0, 100, 750);
TextSampleMeasureText
var canvas = document.getElementById('TextSampleMeasureText'); var context = canvas.getContext('2d'); context.addGrid (30); var text = "This is some text."; context.font = '30px Arial'; context.fillText (text, 0, 30); var w = context.measureText(text).width; context.fillText ("The previous line is " + w + " pixel wide.", 0, 60);
DrawImageSample1
var canvas = document.getElementById('DrawImageSample1'); var context = canvas.getContext('2d'); context.addGrid (50, 'blue', '12px Arial'); var image = new Image(); image.src = "horse.jpg"; context.drawImage (image, 50, 50);
DrawImageSample2
var canvas = document.getElementById('DrawImageSample2'); var context = canvas.getContext('2d'); context.addGrid ( 50, 'blue', '12px Arial'); var image = new Image(); image.src = "horse.jpg"; context.drawImage (image, 50, 50, 600, 150); context.drawImage (image, 50, 250, 150, 200); context.drawImage (image, 350, 250, 100, 200); context.drawImage (image, 600, 250, 50, 200);
DrawImageSample3
var canvas = document.getElementById ('DrawImageSample3'); var context = canvas.getContext ('2d'); context.addGrid (); var image = new Image(); image.src = "horse.jpg"; context.drawImage (image, 150, 40, 130, 120, 75, 100, 200, 150);
DrawImageSample3image
var canvas = document.getElementById('DrawImageSample3image'); var context = canvas.getContext('2d'); context.addGrid (); var image = new Image(); image.src = "horse.jpg"; context.drawImage (image, 0, 0); context.font = '14px sans-serif'; context.strokeStyle = 'red'; context.lineWidth = 5; context.strokeRect(150,40,130,120); context.lineWidth = 1.4; context.strokeText ('sh=120', 85, 100); context.strokeText ('sw=130', 180, 175); context.strokeStyle = 'orange'; context.lineWidth = 2; context.beginPath(); context.moveTo(150,0); context.lineTo(150,40); context.moveTo(0,40); context.lineTo(150,40); context.stroke(); context.lineWidth = 1.4; context.strokeText ('sy=40', 155, 25); context.strokeText ('sx=150', 60, 60);
DrawImageSample3canvas
var canvas = document.getElementById('DrawImageSample3canvas'); var context = canvas.getContext('2d'); context.addGrid (); context.font = '14px sans-serif'; context.strokeStyle = 'orange'; context.lineWidth = 2; context.beginPath(); context.moveTo(75,0); context.lineTo(75,100); context.moveTo(0,100); context.lineTo(75,100); context.stroke(); context.lineWidth = 1.4; context.strokeText ('dx=75', 10, 115); context.strokeText ('dy=100', 80, 50); context.strokeStyle = 'red'; context.lineWidth = 5; context.strokeStyle = 'red'; context.lineWidth = 5; context.strokeRect(75,100,200,150); context.lineWidth = 1.4; context.strokeText ('dw=200', 150, 270); context.strokeText ('dh=150', 10, 175);
ImageDataSample
var canvas = document.getElementById('ImageDataSample'); var w = canvas.width; // w is 256 var h = canvas.height; // h is 256 var context = canvas.getContext('2d'); context.addGrid(32); // see the appendix for this non-standard addGrid() method var imDat = context.createImageData (w,h); var i = 0; for (var y = 0; y < h; y++) { for (var x = 0; x < w; x++) { imDat.data[i++] = x; // the Red component of (x,y), which is set to x imDat.data[i++] = y; // the Green component of (x,y), which is set to y imDat.data[i++] = 0; // the Blue component of (x,y), which is constant 0 imDat.data[i++] = 255; // the Alpha/transparency of (x,y), which is constant 255, i.e. fully visible }; }; context.putImageData (imDat, 0, 0)
ImageDataSampleAgain
var context = document.getElementById('ImageDataSampleAgain').getContext('2d'); context.addGrid(32); context.drawImage(document.getElementById('ImageDataSample'),0,0);
GetImageDataSample1a
var context = document.getElementById('GetImageDataSample1a').getContext('2d'); context.addGrid(20); // generate the text line context.fillStyle = 'black'; context.font = '40pt sans-serif'; context.fillText ('Hi there!',30,70);
GetImageDataSample1b
var context = document.getElementById('GetImageDataSample1b').getContext('2d'); context.addGrid(20); // generate the text line context.fillStyle = 'black'; context.font = '40pt sans-serif'; context.fillText ('Hi there!',30,70); // cut out an ImageData and copy it into the canvas again var imDat = context.getImageData (20,20,260,60); context.putImageData (imDat,320,20); // the red lines context.strokeStyle = 'red'; context.lineWidth = 3.0; context.strokeRect (20,20,260,60); context.strokeRect (320,20,260,60);
GetImageDataSample1c
var context = document.getElementById('GetImageDataSample1c').getContext('2d'); context.addGrid(20); // generate the text field context.fillStyle = 'black'; context.font = '40pt sans-serif'; context.fillText ('Hi there!',30,70); // cut out an ImageData and copy it into the canvas again var imDat = context.getImageData (20,20,260,60); context.putImageData (imDat,320,20);
GetImageDataSample2
var context = document.getElementById('GetImageDataSample2').getContext('2d'); context.addGrid(20); // 0. Generated the text field context.fillStyle = 'black'; context.font = '40pt sans-serif'; context.fillText ('Hi there!',30,70); // 1. Cut out the ImageData object named imDat var w = 260; // explicitly define the width w of the rectangle area var h = 60; // explicitly define the height h of the rectangle var imDat = context.getImageData(20,20,w,h); // cut out the rectangle and save it in an ImageData object named imDat // 2. Create a new ImageDate object with the mirror image, called mirImDat var mirImDat = context.createImageData(imDat); // initialze mirImDat; all components of mirImDat.data are 0 for (var y = 0; y < h; y++) { for (var x = 0; x < w; x++) { var d = 4 * (y * w + x); var s = 4 * (y * w + (w - (x + 1))); mirImDat.data [d + 0] = imDat.data [s + 0]; mirImDat.data [d + 1] = imDat.data [s + 1]; mirImDat.data [d + 2] = imDat.data [s + 2]; mirImDat.data [d + 3] = imDat.data [s + 3]; }; // done updating the mirImDat.data components }; // 3. Insert the mirImDat into the image again context.putImageData (mirImDat,320,20);
AddGridSample1
document.getElementById('AddGridSample1').getContext('2d').addGrid();
AddGridSample2
document.getElementById('AddGridSample2').getContext('2d').addGrid(50,'red');
AddGridSample3
document.getElementById('AddGridSample3').getContext('2d').addGrid(20,'black','5px sans-serif');
allCanvasDrawings()
--- end of the function}; // end of function allCanvasDrawings()
allCanvasDrawings
is called when the document is loadedwindow.onload = allCanvasDrawings;