free-tibet Posté(e) 5 décembre 2012 Share Posté(e) 5 décembre 2012 (modifié) salut à tous ! je suis actuellement sur un projet ou je veux travailler sur une image. je dispose d'une image en fond, j'aimerais recouvrir par dessus une surface noir translucide, mais avec une partie complètement translucide. Voici une image du résultat final que je souhaiterai avoir: j'ai bien sur penser à dessiner 4 rectangles tout autour, mais j'espère obtenir une meilleur solution. Pouvez-vous m'aider ? Merci. Modifié 6 décembre 2012 par free-tibet Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
taz067 Posté(e) 5 décembre 2012 Share Posté(e) 5 décembre 2012 (modifié) heu il faut que la partie non grisé soit mobile ? quel taille l'image, quel résolution ? gif, png jpeg bmp ou flash ? tu as l'image d'origine ? Modifié 5 décembre 2012 par taz067 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
free-tibet Posté(e) 5 décembre 2012 Auteur Share Posté(e) 5 décembre 2012 En fait je veux selectionner une partie d'une image, je dois pouvoir modifier la position et la taille du cadre de sélection. J'ai finalement utilisé la solution de dessiner 4 rectangles autour de la partie à sélectionner. Pour ceux que ça intéresse voici le code de la classe que j'ai créé: public class TrimRectView extends ImageView { public TrimRectView(Context context) { super(context); } private int mTotalWidth, mTotalHeight, mStartX, mStartY, mSelectionWidth, mSelectionHeight; public void updateRect(int startX, int startY, int sizeX, int sizeY, int totalWidth, int totalHeight) { mStartX = startX; mStartY = startY; mSelectionWidth = sizeX; mSelectionHeight = sizeY; mTotalWidth = totalWidth; mTotalHeight = totalHeight; this.postInvalidate(); } public void onDraw(Canvas c) { Paint myPaint = new Paint(); //rectangle gauche myPaint.setColor(Color.argb(100, 0, 0, 0)); c.drawRect(0, 0, mStartX, mTotalHeight, myPaint); //rectangle haut myPaint.setColor(Color.argb(100, 0, 0, 0)); c.drawRect(mStartX, 0, mTotalWidth, mStartY, myPaint); //rectangle droite myPaint.setColor(Color.argb(100, 0, 0, 0)); c.drawRect(mStartX+mSelectionWidth, mStartY, mTotalHeight, mTotalHeight, myPaint); //rectangle bas myPaint.setColor(Color.argb(100, 0, 0, 0)); c.drawRect(mStartX, mStartY+mSelectionHeight, mStartX+mSelectionWidth, mTotalHeight, myPaint); } } ensuite il suffit d'ajouter un capteur d'évènement de type "onTouchListener" en appelant updateRect()... ça fonctionne très bien ! Merci quand même ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
free-tibet Posté(e) 5 décembre 2012 Auteur Share Posté(e) 5 décembre 2012 (modifié) suite à ça je me suis poser une question. Je me suis toujours dis que j'avais la réponse mais j'aimerais une confirmation. les classes de type "View" disposent de méthodes "invalidate()" et "postInvalidate()". je me suis toujours dis ceci: invalidate() doit être appeler dans le thread principale, le threadUI, ou alors depuis un thread lancer depuis "runOnUiThread()" postInvalidate() peut être appeler de n'importe quel thread. cette affirmation est-elle correcte ? Merci ! Modifié 5 décembre 2012 par free-tibet Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 6 décembre 2012 Share Posté(e) 6 décembre 2012 invalidate() doit être appeler dans le thread principale, le threadUI, ou alors depuis un thread lancer depuis "runOnUiThread()" postInvalidate() peut être appeler de n'importe quel thread. cette affirmation est-elle correcte ? Merci ! C'est exactement ce que dit la documentation, en tout cas ;) 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
free-tibet Posté(e) 6 décembre 2012 Auteur Share Posté(e) 6 décembre 2012 ok merci ! ( je ne sais pas mettre résolut) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 6 décembre 2012 Share Posté(e) 6 décembre 2012 (en éditant le titre de ton premier post) 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.