2009-09-14 3 views
1

J'ai un rectangle transparent sur une boîte d'image, si je clique suivant, l'image suivante vient et le rectangle transparent est dessiné. Le problème scintille, tout en passant d'une image à une autre image , le rectangle transparent clignote.please m'aider à se débarrasser de ce problème.je veux éliminer le scintillement, s'il vous plaît aider.Comment empêcher Flikkering sur l'imagebox de Windows Mobile

Merci

Répondre

1

Comment l'implémentez-vous? J'ai rencontré un problème similaire et j'ai implémenté ma propre image en héritant de Control, en remplaçant OnPaint pour dessiner mon image et mon fond transparent, et en surchargeant OnPaintBackground et en ne faisant rien. (Le comportement par défaut de OnPaintBackground est de peindre l'arrière-plan du contrôle, ce que vous n'avez pas besoin de faire si vous contrôlez l'ensemble du contrôle)

Vous pouvez également implémenter la double mise en mémoire tampon dans OnPaint si nécessaire. Réduire le déchirement si vos opérations de peinture prennent du temps.

+0

Yup Matt, U r droite .. Mais la chose est que je ne comprends pas comment régler le double tampon à Picture control de Windows Mobile .. vraiment je me suis mal la tête mec .. j'ai essayé beaucoup de mettre double tampon, épique dans .net 3.5 cadre compact im échouer ... aimablement laissez-moi savoir comment mettre en double mise en mémoire tampon dans un .net 3.5 cadre compact. – Naruto

+0

Je le fais en utilisant des contrôles personnalisés, et peindre le contrôle entier moi-même. Vous pouvez ensuite allouer un bitmap de la taille du contrôle, remplacer OnPaintBackground pour ne rien faire, redéfinir OnPaint pour faire tout votre dessin sur le bitmap, puis, comme dernière chose dans OnPaint, dessiner le bitmap sur le Graphics qui est passé le PaintEventArgs – Matt

+0

oui mat, j'ai essayé la façon dont vous l'avez dit bien, mais un autre problème à venir J'ai une boîte d'image personnalisée avec sizemode = CenterImage. J'ai réglé le BackColor sur Black et j'ai affiché une image 100 * 100 au centre. Puis-je obtenir l'image bitmap de l'image avec l'arrière-plan? Alors, comment l'obtenir? – Naruto

3

Double tampon. Fondamentalement créé une image en cache qui sera affichée. Ensuite, lorsque vous avez besoin de redessiner votre surface, faites-le à une autre image, et une fois que vous avez fini de dessiner, échangez cette image avec l'image mise en cache. De cette façon, vous n'aurez pas de scintillement.

Je peux vous écrire un exemple, mais je ne sais pas si vous êtes en train de coder C++ ou C# puisque vous avez ajouté les deux en tant que balises. Voici un exemple de double buffering manuel en C# http://www.developerfusion.com/code/4668/double-buffering-in-net/

+0

Merci Qua .. J'ai vu le lien que vous avez donné, fondamentalement, nous utilisons. mais nous n'avons pas de support pour contrôler les styles dans .net 3.5 travail de cadre compact .. avez-vous une idée sur la façon de définir les styles de contrôle à la boîte d'image de. NET compact framework 3.5? ... même vous connaissez le même en C++ aussi le fichier .. s'il vous plaît laissez-moi savoir -Merci – Naruto

+0

Je ne pense pas que ce soit pris en charge à ce stade. L'article traite de la manière manuelle de le faire et fournit également des exemples de code. –