HTML Canvas Text use form to control text 3
<!doctype html> <html lang="en"> <body> <div style="position: absolute; top: 50px; left: 50px;"> <canvas id="canvasOne" width="500" height="300"> Your browser does not support HTML 5 Canvas. </canvas>/*from w ww .ja v a2 s . co m*/ <form> Text: <input id="textBox" placeholder="your text" /> <br> Text Font: <select id="textFont"> <option value="serif">serif</option> <option value="sans-serif">sans-serif</option> <option value="cursive">cursive</option> <option value="fantasy">fantasy</option> <option value="monospace">monospace</option> </select> <br> Font Weight: <select id="fontWeight"> <option value="normal">normal</option> <option value="bold">bold</option> <option value="bolder">bolder</option> <option value="lighter">lighter</option> </select> <br> Font Style: <select id="fontStyle"> <option value="normal">normal</option> <option value="italic">italic</option> <option value="oblique">oblique</option> </select> <br> Text Size: <input type="range" id="textSize" min="0" max="200" step="1" value="50"/> <br> Fill Type : <select id="fillType"> <option value="colorFill">Color Fill</option> <option value="linearGradient">Linear Gradient</option> <option value="radialGradient">Radial Gradient</option> <option value="pattern">pattern</option> </select> <br> Text Color: <input class="color" id="textFillColor" value="FF0000"/> <br> Text Color 2: <input class="color" id="textFillColor2" value ="000000"/> <br> Fill Or Stroke : <select id="fillOrStroke"> <option value="fill">fill</option> <option value="stroke">stroke</option> <option value="both">both</option> </select> <br> Text Baseline <select id="textBaseline"> <option value="middle">middle</option> <option value="top">top</option> <option value="hanging">hanging</option> <option value="alphabetic">alphabetic</option> <option value="ideographic">ideographic</option> <option value="bottom">bottom</option> </select> <br> Text Align <select id="textAlign"> <option value="center">center</option> <option value="start">start</option> <option value="end">end</option> <option value="left">left</option> <option value="right">right</option> </select> <br> Alpha : <input type="range" id="textAlpha" min="0.0" max="1.0" step="0.01" value="1.0"/> <br> Shadow X:<input type="range" id="shadowX" min="-100" max="100" step="1" value="1"/> <br> Shadow Y:<input type="range" id="shadowY" min="-100" max="100" step="1" value="1"/> <br> Shadow Blur: <input type="range" id="shadowBlur" min="1" max="100" step="1" value="1" /> <br> Shadow Color: <input class="color" id="shadowColor" value="707070"/> <br> Canvas Width: <input type="range" id="canvasWidth" min="0" max="1000" step="1" value="500"/> <br> Canvas Height: <input type="range" id="canvasHeight" min="0" max="1000" step="1" value="300"/> <br> Canvas Style Width: <input type="range" id="canvasStyleWidth" min="0" max="1000" step="1" value="500"/> <br> Canvas Style Height: <input type="range" id="canvasStyleHeight" min="0" max="1000" step="1" value="300"/> <br> <input type="button" id="createImageData" value="Create Image Data"> <br> <br> <textarea id="imageDataDisplay" rows=10 cols=30></textarea> </form> </div> <script type="text/javascript"> function eventWindowLoaded() { let patternPreload = new Image(); patternPreload.onload = eventAssetsLoaded; patternPreload.src = "texture.jpg"; } function canvasApp() { let message = "your text"; let fontSize = "50"; let fontFace = "serif"; let textFillColor ="#ff0000"; let textAlpha =1; let shadowX = 1; let shadowY = 1; let shadowBlur = 1; let shadowColor = "#707070"; let textBaseline = "middle"; let textAlign = "center"; let fillOrStroke ="fill"; let fontWeight ="normal"; let fontStyle = "normal"; let fillType = "colorFill"; let textFillColor2 ="#000000"; let pattern = new Image(); let theCanvas = document.getElementById("canvasOne"); let context = theCanvas.getContext("2d"); let formElement = document.getElementById("textBox"); formElement.addEventListener("keyup", textBoxChanged, false); formElement = document.getElementById("fillOrStroke"); formElement.addEventListener("change", fillOrStrokeChanged, false); formElement = document.getElementById("textSize"); formElement.addEventListener("change", textSizeChanged, false); formElement = document.getElementById("textFillColor"); formElement.addEventListener("change", textFillColorChanged, false); formElement = document.getElementById("textFont"); formElement.addEventListener("change", textFontChanged, false); formElement = document.getElementById("textBaseline"); formElement.addEventListener("change", textBaselineChanged, false); formElement = document.getElementById("textAlign"); formElement.addEventListener("change", textAlignChanged, false); formElement = document.getElementById("fontWeight"); formElement.addEventListener("change", fontWeightChanged, false); formElement = document.getElementById("fontStyle"); formElement.addEventListener("change", fontStyleChanged, false); formElement = document.getElementById("shadowX"); formElement.addEventListener("change", shadowXChanged, false); formElement = document.getElementById("shadowY"); formElement.addEventListener("change", shadowYChanged, false); formElement = document.getElementById("shadowBlur"); formElement.addEventListener("change", shadowBlurChanged, false); formElement = document.getElementById("shadowColor"); formElement.addEventListener("change", shadowColorChanged, false); formElement = document.getElementById("textAlpha"); formElement.addEventListener("change", textAlphaChanged, false); formElement = document.getElementById("textFillColor2"); formElement.addEventListener("change", textFillColor2Changed, false); formElement = document.getElementById("fillType"); formElement.addEventListener("change", fillTypeChanged, false); formElement = document.getElementById("canvasWidth"); formElement.addEventListener("change", canvasWidthChanged, false); formElement = document.getElementById("canvasHeight"); formElement.addEventListener("change", canvasHeightChanged, false); formElement = document.getElementById("canvasStyleWidth"); formElement.addEventListener("change", canvasStyleSizeChanged, false); formElement = document.getElementById("canvasStyleHeight"); formElement.addEventListener("change", canvasStyleSizeChanged, false); formElement = document.getElementById("createImageData"); formElement.addEventListener("click", createImageDataPressed, false); pattern.src = "image1.png"; drawScreen(); function drawScreen() { //Background context.globalAlpha = 1; context.shadowColor = "#707070"; context.shadowOffsetX = 0; context.shadowOffsetY = 0; context.shadowBlur = 0; context.fillStyle = "#ffffaa"; context.fillRect(0, 0, theCanvas.width, theCanvas.height); //Box context.strokeStyle = "#000000"; context.strokeRect(5, 5, theCanvas.width-10, theCanvas.height-10); //Text context.textBaseline = textBaseline; context.textAlign = textAlign; context.font = fontWeight + " " + fontStyle + " " + fontSize + "px " + fontFace; context.shadowColor =shadowColor; context.shadowOffsetX = shadowX; context.shadowOffsetY = shadowY; context.shadowBlur = shadowBlur; context.globalAlpha = textAlpha; let xPosition = (theCanvas.width/2); let yPosition = (theCanvas.height/2); let metrics = context.measureText(message); let textWidth = metrics.width; let tempColor; if (fillType == "colorFill") { tempColor = textFillColor; } else if (fillType == "linearGradient") { let gradient = context.createLinearGradient(xPosition-textWidth/2, yPosition, textWidth, yPosition); gradient.addColorStop(0,textFillColor); gradient.addColorStop(.6,textFillColor2); tempColor = gradient; } else if (fillType == "radialGradient") { let gradient = context.createRadialGradient(xPosition, yPosition, fontSize, xPosition+textWidth, yPosition, 1); gradient.addColorStop(0,textFillColor); gradient.addColorStop(.6,textFillColor2); tempColor = gradient; } else if (fillType == "pattern") { let tempColor = context.createPattern(pattern,"repeat") } else { tempColor = textFillColor; } switch(fillOrStroke) { case "fill": context.fillStyle = tempColor; context.fillText ( message, xPosition ,yPosition); break; case "stroke": context.strokeStyle = tempColor; context.strokeText ( message, xPosition,yPosition); break; case "both": context.fillStyle = tempColor; context.fillText ( message, xPosition ,yPosition); context.strokeStyle = "#000000"; context.strokeText ( message, xPosition,yPosition); break; } } function textBoxChanged(e) { let target = e.target; message = target.value; drawScreen(); } function textBaselineChanged(e) { let target = e.target; textBaseline = target.value; drawScreen(); } function textAlignChanged(e) { let target = e.target; textAlign = target.value; drawScreen(); } function fillOrStrokeChanged(e) { let target = e.target; fillOrStroke = target.value; drawScreen(); } function textSizeChanged(e) { let target = e.target; fontSize = target.value; drawScreen(); } function textFillColorChanged(e) { let target = e.target; textFillColor = "#" + target.value; drawScreen(); } function textFontChanged(e) { let target = e.target; fontFace = target.value; drawScreen(); } function fontWeightChanged(e) { let target = e.target; fontWeight = target.value; drawScreen(); } function fontStyleChanged(e) { let target = e.target; fontStyle = target.value; drawScreen(); } function shadowXChanged(e) { let target = e.target; shadowX = target.value; drawScreen(); } function shadowYChanged(e) { let target = e.target; shadowY = target.value; drawScreen(); } function shadowBlurChanged(e) { let target = e.target; shadowBlur = target.value; drawScreen(); } function shadowColorChanged(e) { let target = e.target; shadowColor = target.value; drawScreen(); } function textAlphaChanged(e) { let target = e.target; textAlpha = (target.value); drawScreen(); } function textFillColor2Changed(e) { let target = e.target; textFillColor2 = "#" + target.value; drawScreen(); } function fillTypeChanged(e) { let target = e.target; fillType = target.value; drawScreen(); } function canvasWidthChanged(e) { let target = e.target; theCanvas.width = target.value; drawScreen(); } function canvasHeightChanged(e) { let target = e.target; theCanvas.height = target.value; drawScreen(); } function canvasStyleSizeChanged(e) { let styleWidth = document.getElementById("canvasStyleWidth"); let styleHeight = document.getElementById("canvasStyleHeight"); let styleValue = "width:" + styleWidth.value + "px; height:" + styleHeight.value +"px;"; theCanvas.setAttribute("style", styleValue ); drawScreen(); } function createImageDataPressed(e) { let imageDataDisplay = document.getElementById("imageDataDisplay"); imageDataDisplay.value = theCanvas.toDataURL(); window.open(imageDataDisplay.value,"canavsImage","left=0,top=0,width=" + theCanvas.width + ",height=" + theCanvas.height +",toolbar=0,resizable=0"); } } canvasApp(); </script> </body> </html>