J'ai un problème avec globalCompositeOperation.Comment appliquer globalCompositeOperation correctement sur les éléments de canvas?
Mon but est de rendre l'élément Bleu affiché uniquement à l'intérieur de l'élément Rouge et ne devrait pas être visible du tout à l'extérieur du rectangle Rouge (type d'effet Overflow-Hidden). De plus, le rouge et le bleu doivent avoir une capacité de transformation (les deux sont modifiables).
Comme vous pouvez le voir, si je vais ajouter un élément de plus dans le canevas (élément jaune), le bleu devient visible sur la zone où le jaune et le bleu se chevauchent.
http://jsfiddle.net/redlive/q4bvu0tb/1/
var canvas = new fabric.Canvas('c');
var yellow = new fabric.Circle({
top: 200,
left: 0,
radius: 100,
strokeDashArray: [5, 5],
stroke: 'black',
strokeWidth: 5,
fill: 'yellow'
});
canvas.add(yellow);
var red = new fabric.Rect({
top: 0,
left: 0,
width: 300,
height: 300,
strokeDashArray: [5, 5],
stroke: 'black',
strokeWidth: 5,
fill: 'red',
rx: 40
});
canvas.add(red);
var blue = new fabric.Circle({
top: 150,
left: 80,
radius: 100,
strokeDashArray: [5, 5],
stroke: 'black',
strokeWidth: 5,
fill: 'blue',
globalCompositeOperation: 'source-atop'
});
canvas.add(blue);
var green = new fabric.Circle({
top: 0,
left: 0,
radius: 100,
strokeDashArray: [5, 5],
stroke: 'black',
strokeWidth: 5,
fill: 'green'
});
canvas.add(green);
Conditions obligatoires:
- Conserver l'aspect des éléments sur toile.
- Pas de coupure (depuis écrêtage ne permet pas d'ajouter de la couleur d'arrière-plan et de l'image dans le même temps)
Merci pour votre commentaire ... De cette façon il, je sais ... Le problème est que les éléments de charge dynamique sur la toile et je dois leur apparence de préserver (z-index). Le jaune doit être derrière la zone rouge. –
@Redlive ohk .. vérifier la mise à jour –
Très belle ... pourrait être une solution potentielle, cependant, ce type de manipulation avec les éléments Retrait et Ajout brise la condition du rendu des éléments dynamiques et, par conséquent, ne préserve pas leur commande ... –