Javascript html、js即使加载了图像和文本,也无法在画布上绘制任何内容
我正在尝试使用JS制作一个绘图页。 但是,显示画布,但不绘制线条。 图片和字体已加载,但图形未工作。 你能告诉我如何调试它或者问题是什么吗Javascript html、js即使加载了图像和文本,也无法在画布上绘制任何内容,javascript,html,forms,html5-canvas,Javascript,Html,Forms,Html5 Canvas,我正在尝试使用JS制作一个绘图页。 但是,显示画布,但不绘制线条。 图片和字体已加载,但图形未工作。 你能告诉我如何调试它或者问题是什么吗 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>draw line in the canvas</title> </head> <body onload="init()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>draw line in the canvas</title>
</head>
<body onload="init()">
<h3>draw lines with your mouse</h3>
<hr>
<canvas id="myCanvas" style="background-color:aliceblue"
width="500" height="400">
</canvas><br>
thickness :<input type="number" id="widthInput" value="2"
min="0" max="20" step="1" onchange="lineWidth=this.value">
colors : <input type="color" id="colorInput" value="#00ff00" onchange="strokeColor=this.value">
<script>
var canvas, context;
var colorInputObj, widthInputObj;
var lineWidth;
var strokeColor;
function init() {
canvas = document.getElementById("myCanvas");
context = canvas.getContext("2d");
widthInputObj = document.getElementById("widthInput");
lineWidth = widthInputObj.value;
colorInputObj = document.getElementById("colorInput");
strokeColor = colorInputObj.value;
canvas.addEventListener("mousemove", function(e){move(e)}, false);
}
var startX=0, startY=0;
var drawing=false;
function draw(curX, curY) {
context.beginPath();
context.lineWidth = lineWidth;
context.strokeStyle = strokeStyle;
context.moveTo(startX, startY);
context.lineTo(curX,curY);
context.stroke();
}
function down(e) {
startX = e.offsetX;
startY = e.offsetY;
drawing = true;
}
function up(e) {
drawing = false;
}
function move(e) {
if(!drawing)
return;
var curX = e.offsetX;
var curY = e.offsetY;
draw(curX, curY);
startX = curX;
startY = curY;
}
function out(e) {
drawing = false;
}
</script>
</body>
</html>
<pre>
var startAngle = document.getElementById("startAngle").value;
var endAngle = document.getElementById("endAngle").value;
var lineWidth = document.getElementById("lineWidth").value;
var strokeStyle = document.getElementById("strokeStyle").value;
</pre>
在画布上画线
用鼠标画线
厚度:
颜色:
var,上下文;
var colorInputObj、WITHINPUTOBJ;
var线宽;
色差;
函数init(){
canvas=document.getElementById(“myCanvas”);
context=canvas.getContext(“2d”);
widthInput=document.getElementById(“widthInput”);
线宽=宽度InputBj.value;
colorInput=document.getElementById(“colorInput”);
strokeColor=colorInputBj.value;
addEventListener(“mousemove”,函数(e){move(e)},false);
}
var startX=0,startY=0;
var绘图=错误;
函数绘制(curX,curY){
context.beginPath();
context.lineWidth=线宽;
context.strokeStyle=strokeStyle;
context.moveTo(startX,startY);
lineTo(curX,curY);
stroke();
}
功能下降(e){
startX=e.offsetX;
startY=e.offsetY;
绘图=真;
}
函数up(e){
图纸=假;
}
功能移动(e){
如果(!图纸)
返回;
var curX=e.offsetX;
var curY=e.offsetY;
绘制(curX,curY);
startX=curX;
startY=curY;
}
函数out(e){
图纸=假;
}
此示例还仅绘制具有alice蓝色的画布。
即使事件和函数保存正确,当我单击按钮时,它也不起作用
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Draw with the form!</title>
<style>
td {
text-align : right;
padding-left : 5px;
padding-right : 5px;
}
</style>
<script>
function draw() {
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var x = document.getElementById("x").value;
var y = document.getElementById("y").value;
var radius = document.getElementById("radius").value;
var ori = document.getElementById("orientation");
var index = ori.selectedIndex;
var orientation;
if(index == 0)
orientation = false;
else
orientation = true;
var startAngle = document.getElementById("startAngle");
startAngle = Math.PI * parseInt(startAngle) / 180;
var endAngle = document.getElementById("endAngle");
endAngle = Math.PI * parseInt(endAngle) / 180;
var lineWidth = document.getElementById("lineWidth");
var strokeStyle = document.getElementById("strokeStyle");
context.beginPath();
context.arc(x, y, startAngle, endAngle, orientation);
context.lineWidth = lineWidth;
context.strokeStyle = strokeStyle;
context.stroke();
}
function erase() {
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
canvas.clearRect(0, 0, canvas.width, canvas.height);
}
</script>
</head>
<body>
</body>
<h3>Draw with the form!</h3>
<hr>
<form>
<table>
<tr><td><label>x <input id="x" type="number" value="100"></label></td>
<td><label>y <input id="y" type="number" value="100"></label></td></tr>
<tr>
<td><label>width <input id="radius" type="number" value="80"></label></td>
<td><label>way<select id="orientation">
<option value="false" selected>clock way</option>
<option value="true">opposite clock</option>
</select>
</label></td>
</tr>
<tr><td><label>startAngle<input id="startAngle" type="number" value="0"></label></td>
<td><label>endAngle<input id="endAngle" type="number" value="360"></label></td>
</tr>
<tr><td><label>lineWidth<input id="lineWidth" type="number" value="1"></label></td>
<td><label>strokeStyle<input id="strokeStyle" type="color" value="#000000"></label></td></tr>
<tr><td><label><button type="button" onclick="draw()">그리기</button></label></td>
<td><button type="button" onclick="erase()">지우기</button></td></tr>
</table>
</form>
<canvas id="myCanvas" width="500" height="200"
style="background-color:aliceblue"></canvas>
</html>
用表格画!
运输署{
文本对齐:右对齐;
左侧填充:5px;
右侧填充:5px;
}
函数绘图(){
var canvas=document.getElementById(“myCanvas”);
var context=canvas.getContext(“2d”);
var x=document.getElementById(“x”).value;
var y=document.getElementById(“y”).value;
var radius=document.getElementById(“radius”).value;
var ori=document.getElementById(“方向”);
var指数=ori.selectedIndex;
var取向;
如果(索引==0)
方向=错误;
其他的
方向=正确;
var startAngle=document.getElementById(“startAngle”);
startAngle=Math.PI*parseInt(startAngle)/180;
var endAngle=document.getElementById(“endAngle”);
endAngle=Math.PI*parseInt(endAngle)/180;
var lineWidth=document.getElementById(“线宽”);
var strokeStyle=document.getElementById(“strokeStyle”);
context.beginPath();
弧(x,y,星形,端角,方向);
context.lineWidth=线宽;
context.strokeStyle=strokeStyle;
stroke();
}
函数擦除(){
var canvas=document.getElementById(“myCanvas”);
var context=canvas.getContext(“2d”);
canvas.clearRect(0,0,canvas.width,canvas.height);
}
用表格画!
x
Y
宽度
方式
钟道
对钟
星际缠结
端角
线宽
strokeStyle
그리기
지우기
以下几行中缺少value属性
谢谢你的建议!我更改了它们,但它仍然不起作用:(您有其他解决方案吗?请检查
startAngle
和endAngle
的计算逻辑。查看链接。例如,我给您的startAngle指定了2000值。向下
(和向上
和向外
)从未调用,因此draw
始终为false,并且draw
从未执行任何操作。您可能希望它成为mousedown事件侦听器的一部分。
`context.clearRect(0, 0, canvas.width, canvas.height);`