J'utilise xamarin pour développer une application Android. Lorsque j'essaie d'utiliser la classe Region j'ai un problème, le code ci-dessous peut bien fonctionner et montrer une zone bleue attendue.Ne comprend pas très bien la classe de région
Rect rect1 = new Rect(0, 0, 10,10);
canvas.ClipRect(rect1);
Rect rect2 = new Rect(20, 20, 30,30);
canvas.ClipRect(rect2, Region.Op.Union);
canvas.DrawRect(0, 0, 40, 40, paint);
Mais au-dessous du code ne fonctionne pas, il suffit rien montrer, un fond blanc
Region region = new Region();
Rect rect1 = new Rect(0, 0, 10,10);
region.Union(rect1);
Rect rect2 = new Rect(20, 20, 30,30);
region.Union(rect2);
canvas.ClipRegion(region);
canvas.DrawRect(0, 0, 40, 40, paint);
Je ne sais pas pourquoi.
Merci. J'ai changé mes coordonnées et les formes peuvent être affichées. Mais je ne suis pas d'accord avec votre explication. Si ActionBar ou quelque chose d'autre couvre ma forme et cause qu'il ne peut pas être vu dans le deuxième cas alors pourquoi ces formes peuvent être vues dans le premier cas? – Frank
Notez que contrairement à clipRect() et clipPath() qui transforment leurs arguments par la matrice courante, signifie pour la méthode clipRect(), sa coordonnée est la matrice courante, l'espace dans lequel elle sera placée. Mais pour la méthode ClipRegion(), sa coordonnée est le bitmap de la couche en cours, l'écran du téléphone. Leur coordonnée est différente. –
J'ai mis à jour ma réponse, veuillez la vérifier. :) –