我通过谷歌找到的二次/三次贝塞尔曲线代码主要通过将线细分为一系列点并用直线连接它们来实现.光栅化发生在行算法中,而不是在bézier算法中.像Bresenham这样的算法逐像素地工作以栅格化一条线,并且可以进行优化(参见Po-Han Lin的解决方案).
什么是二次贝塞尔曲线算法,像线像算法一样逐像素地工作,而不是绘制一系列点?
我想在样品纸杯上包装图像和文字.当图像上传到画布上时,我想将它包裹在纸杯的背景图像上,纸杯的位置始终是固定的.我正在使用Fabric JS作为html5画布工具.这是我的代码,但它只显示1像素的图像,当我点击图像拖放,它VANISHES.
HTML:
<div id="container">
<input type="file" id="imageLoader" name="imageLoader" />
Remove:<input type="button" value="remove" id="imageRemove" name="imageRemove" onClick="handleRemove()"/>
<canvas id="canvas" width="500" height="400" style="width:1000px;height:500px;margin-left:5%;" ></canvas>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
var offsetY=[0,1,2,3,4,5,6,5,4,3,2,1,0];
var canvas = new fabric.Canvas('canvas', {
backgroundColor: 'rgb(240,240,240)'
});
var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);
function handleImage(e) {
var reader = new FileReader();
reader.onload = function (event) {
var image = new Image();
image.onload = function () {
var width = image.width,
height = image.height;
var context = $("canvas")[0].getContext("2d");
for(var x=0;x<offsetY.length;x++){
context.drawImage(image,
x,0,1,image.height, …Run Code Online (Sandbox Code Playgroud)