var canvas = new fabric.Canvas('canvas');
var DIMICON = 15;
var HideControls = {
'tl':true,
'tr':true,
'bl':true,
'br':true,
'ml':false,
'mt':false,
'mr':false,
'mb':false,
'mtr':false
};
var dataImage = [
\t "https://cdn1.iconfinder.com/data/icons/streamline-interface/60/cell-8-10-120.png", /*scale*/
"https://cdn1.iconfinder.com/data/icons/ui-color/512/Untitled-12-128.png", /*delete*/
"https://cdn2.iconfinder.com/data/icons/social-messaging-productivity-1/128/sync-16.png", /*rotate*/
"https://cdn2.iconfinder.com/data/icons/social-messaging-productivity-1/128/write-compose-16.png", /*change text*/
"https://cdn3.iconfinder.com/data/icons/social-messaging-productivity-1/128/save-16.png" /*save*/
];
//********override*****//
fabric.Object.prototype._drawControl = function(control, ctx, methodName, left, top) {
if (!this.isControlVisible(control)) {
return;
}
\t var SelectedIconImage = new Image();
var size = this.cornerSize;
/* fabric.isVML() ||*/ this.transparentCorners || ctx.clearRect(left, top, size, size);
\t switch (control)
{
case 'tl':/*delete*/
SelectedIconImage.src = dataImage[1];
\t \t \t break;
case 'tr':/*scale*/
SelectedIconImage.src = dataImage[0]; \t
\t \t \t break;
case 'bl':/*scale*/
SelectedIconImage.src = dataImage[0];
\t \t \t break;
case 'br':/*rotate*/
SelectedIconImage.src = dataImage[2];
\t \t \t break;
default:
ctx[methodName](left, top, size, size);
}
if (control == 'tl' || control == 'tr' || control == 'bl' || control == 'br')
{
try {
ctx.drawImage(SelectedIconImage, left, top, DIMICON, DIMICON);
} catch (e) {
\t \t \t \t ctx[methodName](left, top, size, size);
}
}
}
//override prorotype _setCornerCursor to change the corner cusrors
\t fabric.Canvas.prototype._setCornerCursor = function(corner, target) {
\t \t if (corner === 'mtr' && target.hasRotatingPoint) {
\t \t \t this.setCursor(this.rotationCursor);
\t \t \t /*ADD*/
\t \t }else if(corner == "tr" || corner == "bl"){
\t \t \t this.setCursor('sw-resize');
\t \t }else if(corner == "tl" || corner == "br"){
\t \t \t this.setCursor('pointer');
\t \t } \t \t \t
\t \t \t /*ADD END*/
\t \t else {
\t \t \t this.setCursor(this.defaultCursor);
\t \t \t return false;
\t \t }
};
\t fabric.Canvas.prototype._getActionFromCorner = function(target, corner){
var action = 'drag';
\t if (corner){
\t \t switch(corner){
\t \t \t case 'ml':
\t \t \t case 'mr':
\t \t \t \t action = 'scaleX';
\t \t \t \t break;
\t \t \t case 'mt':
\t \t \t case 'mb':
\t \t \t \t action = 'scaleY';
\t \t \t \t break;
\t \t \t case 'mtr':
\t \t \t \t action = 'rotate';
\t \t \t \t break;
\t \t \t /**ADD **/ \t
\t \t \t case 'br':
\t \t \t \t action = 'rotate';
\t \t \t \t break;
\t \t \t case 'tl'://delete function if mouse down
\t \t \t \t action = 'delete';
\t \t \t \t canvas.remove(canvas.getActiveObject());
\t \t \t \t break; \t \t
\t \t \t /**ADD END**/ \t \t \t \t
\t \t \t default: action = 'scale';
\t \t }
\t \t return action;
\t }
}
\t
\t fabric.Canvas.prototype._performTransformAction = function(e, transform, pointer) {
var x = pointer.x,
y = pointer.y,
target = transform.target,
action = transform.action;
if (action === 'rotate') {
this._rotateObject(x, y);
this._fire('rotating', target, e);
}
else if (action === 'scale') {
this._onScale(e, transform, x, y);
this._fire('scaling', target, e);
}
else if (action === 'scaleX') {
this._scaleObject(x, y, 'x');
this._fire('scaling', target, e);
}
else if (action === 'scaleY') {
this._scaleObject(x, y, 'y');
this._fire('scaling', target, e);
}
\t /**ADD**/
\t else if (action === 'delete') {
\t \t //do nothing, because here function executed when mouse moves
\t }
\t /**ADD END**/
\t else {
this._translateObject(x, y);
this._fire('moving', target, e);
this.setCursor(this.moveCursor);
}
}
//********override END*****//
//create a rect object
var rect = new fabric.Rect({
left: 100,
top: 100,
fill: "#FF0000",
stroke: "#000",
width: 100,
height: 100,
strokeWidth: 10,
opacity: .8
});
canvas.add(rect);
rect.setControlsVisibility(HideControls);
fabric.Image.fromURL('http://serio.piiym.net/CVBla/txtboard/thumb/1260285874089s.jpg', function (img) {
img.top = 60;
img.left = 250;
img.setControlsVisibility(HideControls);
canvas.add(img);
});
canvas.renderAll();
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script>
<div id="canvas-container" class="over">
<div class="canvas-container" style="width: 800px; height: 600px; position: relative; -webkit-user-select: none;">
<canvas id="canvas" width="800" height="600"></canvas>
</div>
</div>
to działa dziękuję bardzo dużo :) –