cs_Stephane33
Messages postés630Date d'inscriptionsamedi 15 février 2003StatutModérateurDernière intervention 9 octobre 2011
-
13 août 2007 à 13:58
Donpi
Messages postés12Date d'inscriptionvendredi 10 octobre 2008StatutMembreDerniè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.
Donpi
Messages postés12Date d'inscriptionvendredi 10 octobre 2008StatutMembreDerniè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és2Date d'inscriptionmardi 3 juillet 2007StatutMembreDernière intervention12 juin 2008 12 juin 2008 à 13:00
salut,
Merci beaucoup pour votre reponse rapide ^^, ca resoud le probeleme.
P0lO
Messages postés65Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention12 juin 20081 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és2Date d'inscriptionmardi 3 juillet 2007StatutMembreDernière intervention12 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és65Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention12 juin 20081 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és630Date d'inscriptionsamedi 15 février 2003StatutModérateurDernière intervention 9 octobre 20111 14 sept. 2007 à 13:49
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és65Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention12 juin 20081 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és630Date d'inscriptionsamedi 15 février 2003StatutModérateurDernière intervention 9 octobre 20111 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és65Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention12 juin 20081 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és630Date d'inscriptionsamedi 15 février 2003StatutModérateurDernière intervention 9 octobre 20111 13 août 2007 à 13:58
3 nov. 2009 à 17:08
A+
12 juin 2008 à 13:00
Merci beaucoup pour votre reponse rapide ^^, ca resoud le probeleme.
12 juin 2008 à 07:45
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...
12 juin 2008 à 02:00
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.
19 sept. 2007 à 00:29
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,...
14 sept. 2007 à 13:49
14 sept. 2007 à 05:02
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...
16 août 2007 à 08:55
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?
15 août 2007 à 01:13
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
;)
13 août 2007 à 17:53
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...
13 août 2007 à 13:58