2012-12-13 3 views
0

이전에 stackoverflow에서 찾은 플러그인을 사용합니다. 그리기가 부드럽고 멋지게되었습니다. 내가 원하는 것은 캔버스에서 그려진 이미지 부분 만 출력물이 아닌 전체 캔버스로 가져 오는 것입니다. 누군가 도울 수 있어요. http://jsfiddle.net/sVsZL/1/캔버스를 사용하여 전체 캔버스가 아닌 그려진 이미지 만 표시합니다.

function canvasDisplay() { 
var c=document.getElementById("canvas"); 
canvasImage=c.toDataURL("image/png"); 
document.getElementById("SSMySelectedImage").src=canvasImage; 
} 

답변

1

다른 하나는 완전히 꺼 때문에 다른 대답을 추가 : 이 내가 지금 내 캔버스에 대한 사용하고있는 코드입니다.

Live Demo

은 당신이 기본적으로 필요로하는 것은 경계 상자의 추적을 유지하는 것입니다. 내가하는 것은 여러분이 그려 놓은 곳의 최소값과 최대 값을 가지고있는 객체를 만드는 것입니다. 이렇게하면 이미지의 크기와 시작/끝 위치를 추적 할 수 있습니다.

this.dim = {minX : 9999, minY : 9999, maxX : 0, maxY : 0}; 

그런 다음 경계를 확인하는 함수를 만들었습니다.

this.setDimensions = function(x,y){ 
     if(x < this.dim.minX){ 
      this.dim.minX = x; 
     } 

     if(y < this.dim.minY){ 
      this.dim.minY = y; 
     } 

     if(x > this.dim.maxX){ 
      this.dim.maxX= x; 
     } 

     if(y > this.dim.maxY){ 
      this.dim.maxY = y; 
     } 
    } 

클릭하거나 이동하는 동안 확인하십시오.

this.mousedown = function(ev) { 
     tool.setDimensions(ev._x,ev._y); 
    }; 

    this.mousemove = function(ev) { 
      tool.setDimensions(ev._x,ev._y); 
    }; 

그리고 이것은 당신이 그 멋진 코드 toDataUrl

var button = document.getElementsByTagName("input")[0]; 
     button.addEventListener("click", function(){ 
      var savedCanvas = document.createElement("canvas"), 
       savedCtx = savedCanvas.getContext("2d"), 
       minX = PEN.dim.minX, 
       minY = PEN.dim.minY, 
       maxX = PEN.dim.maxX, 
       maxY = PEN.dim.maxY, 
       width = maxX - minX, 
       height = maxY - minY; 

      savedCanvas.width = width; 
      savedCanvas.height = height; 

      document.body.appendChild(savedCanvas); 
      savedCtx.drawImage(canvas,minX,minY,width,height,0,0,width,height); 
     }); 
+0

감사로 절감 할 수있는 새로운 캔버스 부분을 그립니다 단지 샘플 기능입니다. 그러나 연습하면서 나는 이미지의 작은 부분이 오른쪽과 상단에서 잘린 것을 발견했습니다. 캡처 상자의 크기를 어떻게 늘립니까? –

+0

@Lotkar : 당신은 꽤 경험이 있습니다. 나는 코딩을 처음 사용하기 때문에. 다양한 선 너비로 동일한 이미지를 그리는 것을 도와 줄 수 있습니까? 간단한 단어 캔버스에 드래그하는 동안 선 너비를 작은에서 보통으로 변경하려면. 드로잉을 전문적으로 보이게하려면? 감사 –

관련 문제