7
votes

Remplir la toile à l'extérieur du rectangle

Je veux remplir la zone à l'extérieur d'un rectangle sur une toile. J'utilise

 canvas.drawRect(pTopLeft.x, pTopLeft.y, pBotRight.x, pBotRight.y, paint);


0 commentaires

4 Réponses :


6
votes

Vous n'allez pas remplir dehors du clip; C'est le genre de truc clip est là pour empêcher! Si vous souhaitez remplir l'espace situé à l'extérieur d'un recttacle et à l'intérieur des limites de la couche de dessin, construisez quatre rects auxiliaires: xxx

puis remplissez-les.


5 commentaires

Merci Ted. J'ai joué avec le remplissage de la toile entière puis essayant de faire la région du clip transparent - pas de bien. Votre méthode a fait le tour.


Je sais que vous l'avez travaillé maintenant, mais une autre possibilité s'est produite pour moi: définir une région de clip qui exclut le milieu et le remplissage. Je pense que si vous utilisez canvas.cliprect (Innerrect, région.op.op.difefence) Il frappera le trou que vous voulez.


@Tedhopple en fait je ne peux pas obtenir de rectangles. Pouvez-vous me partair comment dessiner rectangle et remplir le rectangle extérieur des limites?


@Immathan - Veuillez poster une question distincte expliquant ce que vous essayez de faire, ce que vous avez essayé et qu'en est-il de cela ne fonctionne pas. Sans savoir que, il est difficile de savoir comment aider.


@Tedhopp, voici ma question. Stackoverflow.com/questions/25679259/... < / a>



0
votes

Vous ne pouvez pas dessiner en dehors de la toile ; Cette zone appartient à la vue . Avez-vous la possibilité de sous-classer le parent voir et faire votre dessin dans cette classe?

Si vous souhaitez dessiner en dehors du clip CANVAS , vous aurez à Invalidate () Les zones qui vous intéressent.


0 commentaires

19
votes

Merci Ted and Trojanfoe - La solution la soirée que j'ai proposée est xxx


1 commentaires

Pouvez-vous me partager les points à donner pour dessiner un centre rectangle et remplir dehors des limites?



2
votes

ics et ci-dessus ...

canvas.clipRect(rHole,  Region.Op.DIFFERENCE);


0 commentaires