ROTATION D'IMAGE POUR LE COMPACT FRAMEWORK

cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 - 13 août 2007 à 13:58
Donpi Messages postés 12 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 9 février 2010 - 3 nov. 2009 à 17:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43686-rotation-d-image-pour-le-compact-framework

Donpi Messages postés 12 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 9 février 2010
3 nov. 2009 à 17:08
Je veux pas trop m'avancer mais un petit coup de lockbit pourrais te faire gagner pas mal de performance
A+
tafoune Messages postés 2 Date d'inscription mardi 3 juillet 2007 Statut Membre Dernière intervention 12 juin 2008
12 juin 2008 à 13:00
salut,
Merci beaucoup pour votre reponse rapide ^^, ca resoud le probeleme.
P0lO Messages postés 65 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 12 juin 2008 1
12 juin 2008 à 07:45
Salut,
de mémoire, l'image contenue dans une pictureBox est au format System.Drawing.Image, l'erreur viens donc tout simplement du fait que l'image que tu passe en paramètre à la méthode n'est pas dans le bon format,... Si l'image que tu place dans ta pictureBox est au format System.Drawing.Bitmap essaye ceci sa devrait fonctionner :
pict.Image = Rotate((System.Drawing.Bitmap)pict.Image, 20);

Bon courage...
tafoune Messages postés 2 Date d'inscription mardi 3 juillet 2007 Statut Membre Dernière intervention 12 juin 2008
12 juin 2008 à 02:00
salut,
dabor je voulais vous remercier pour ce code, et je voulais savoir est ce que pour appeler cette fonction faut juste metre l'image dans dans un pictureBox (pict par exemple) et definir l'angle par exemple 20°,puis faire
pict.Image = Rotate(pict.Image, 20)
Si c'est le cas, en faisant ca j'obtient cette erreur:"The best overloaded method match for 'monprojet.Rotate(System.Drawing.Bitmap, int)' has some invalid arguments"
d'apres ce que j'ai compris le probleme reside dont la synthaxe que j'ai utiliser poru appeler la fonction...
j'attends vos reponses
merci.
P0lO Messages postés 65 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 12 juin 2008 1
19 sept. 2007 à 00:29
Bonjour!
J'ai mis au point cette méthode pour faire des rotations de petites images (moin de 30 pixels sur 30 pixels) donc cela ne me pose pas de problèmes mais éffectivement la rotation peut devenir très lente mais cela dépend non seulement des Get/SetPixel mais aussi de l'angle de rotation choisi,...
Pour ce qui est d'améliorer ce code on peut éssayer d'autre méthode en passant par des pointeurs (ce qui implique de vérrouiller en mémoire l'image d'abord pour éviter qu'elle ne soit déplacée en mémoire) mais ce n'est pas le but ici puisque ma fonction à pour but de proposer une fonction simple et haut niveau donc facilement compréhensible par des débutants par exemple,...
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
14 sept. 2007 à 13:49
Je crois qu'ils ont réglé ce problème avec la CF2
Utilisateur anonyme
14 sept. 2007 à 05:02
J'ai fait presque la même chose en un peu moins bien, je ne gère pas le rognage des bords mais dans mon cas, ça n'a pas d'importance.
La seule remarque constructive que je peux me permettre de faire c'est que les fonctions GetPixel et SetPixel sont très lentes, dès qu'il s'agit de traiter des images assez importantes, on sent tout de suite la limite. Par contre, je ne sais pas comment remplacer ces fonctions mais ça me parait impératif...
P0lO Messages postés 65 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 12 juin 2008 1
16 août 2007 à 08:55
Tu ne m'a pas vexé mais je suis un peu sur les nerfs (boulot),...Effectivement ton image ne sera pas tronquée car tu effectue une rotation de 90° ici je prend un angle quelconque donc si je ne redimenssione pas l'image pour certain angles je vais perdre des morceaux de l'image,...
Sinon éffectivement si tu parlait de la copie pixel par pixel oui il s'agit de la même technique, mais de toutes façon à moins d'utiliser des dll externes il me semble qu'il n'y à pas beaucoup de solutions...
Je ne comprend pas pourquoi Microsoft à retiré certaine chose du Compact Framework puisque ce genre de fonctions sont plus que utile,...
Par contre pourquoi personne ne note les sources ici?
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
15 août 2007 à 01:13
Désolé je ne voulais pas te vexer.
En fait mon image après rotation n'est pas tronquée, je ne perd pas de "morceaux d'images"
Quand je dis similaire, c'était plus sur le principe de la copie de pixels par pixels
Je me suis limité qu'a des rotations simples, qui sont absentes de Compact Framework, mais bien présentes dans le Framework 1.0
;)
P0lO Messages postés 65 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 12 juin 2008 1
13 août 2007 à 17:53
Salut!
Mis à que nos 2 codes traites de rotation d'image je ne vois pas ce qu'il ont de similaire désolé...
Les algorithme de rotation ne sont pas les mêmes, tu ne proposait qu'une fonction RotateLeft et Miroir ici il faut passer l'angle désiré en paramètre,...
De plus tu ne redimenssionait pas le nouveau Bitmap alors qu'ici étant donné que l'angle est quelconque je redimenssione le nouveau Bitmap pour éviter de perdre des "morceaux d'image",...
Regarde bien mon code et dis moi ce qui est similaire?
Cordialement...
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
13 août 2007 à 13:58
J'ai utilisé une technique similaire l'année dernière ....> en Vb.net http://www.pdafr.com/codes/ROTATION-MIROIR-BITMAP_38975.aspx
Rejoignez-nous