Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Sélection | |
| | Auteur | Message |
---|
Invité Invité
| Sujet: Sélection Dim 21 Nov 2010 - 14:42 | |
| Voici comment faire une sélection : - Code:
-
label time
dim x1,y1,x2,y2,x3,y3,truc
2d_target_is 0
timer 1 timer_interval 1,1 on_timer 1,time
end
time: 2d_pen_dot if mouse_left_down(0)=1 then truc=1:x1=mouse_x_position(0):y1=mouse_y_position(0):cls:2d_rectangle x1,y1,mouse_x_position(0),mouse_y_position(0) if mouse_left_up(0)=1 then cls:truc=0 if truc=1 x2=mouse_x_position(0) y2=mouse_y_position(0) if x2=x3 and y2=y3 then return cls:2d_rectangle x1,y1,x2,y2 x3=mouse_x_position(0) y3=mouse_y_position(0) end_if return |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Dim 21 Nov 2010 - 14:58 | |
| Ah oui, il y a de l'idée, là-dedans. Cela pourrait sûrement pouvoir servir pour un jeu ou un gestionnaire de dessin ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection Dim 21 Nov 2010 - 15:44 | |
| Très joli. Pour effectuer une sélection effectuer une sélection dans un picture, il suffit de placer le numéro d'objet du picture dans la commande 2d_target_is et toutes les occurences de (0), et on peut commencer à traiter l'image: - Code:
-
label time
dim x1,y1,x2,y2,x3,y3,truc dim no% no% = 10
picture no%:width no%,400:height no%,400
2d_target_is no%
timer 1 timer_interval 1,1 on_timer 1,time
end
time: 2d_pen_dot if mouse_left_down(no%)=1 then truc=1:x1=mouse_x_position(no%):y1=mouse_y_position(no%):cls:2d_rectangle x1,y1,mouse_x_position(no%),mouse_y_position(no%) if mouse_left_up(no%)=1 then cls:truc=0 if truc=1 x2=mouse_x_position(no%) y2=mouse_y_position(no%) if x2=x3 and y2=y3 then return cls:2d_rectangle x1,y1,x2,y2 x3=mouse_x_position(no%) y3=mouse_y_position(no%) end_if return | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Sélection Dim 21 Nov 2010 - 17:06 | |
| Très intéressant, effectivement, c'est à creuser. en ajoutant un petit peu au programme de Klaus, pour fixer le rectangle: - Code:
-
label time
dim x1,y1,x2,y2,x3,y3,truc dim no% no% = 10
picture no%:width no%,400:height no%,400
2d_target_is no%
timer 1 timer_interval 1,1 on_timer 1,time
end
time: 2d_pen_dot if mouse_left_down(no%)=1 then truc=1:x1=mouse_x_position(no%):y1=mouse_y_position(no%):cls:2d_rectangle x1,y1,mouse_x_position(no%),mouse_y_position(no%) if mouse_left_up(no%)=1 then 2d_pen_solid:2d_rectangle x1,y1,x2,y2:truc=0 if truc=1 x2=mouse_x_position(no%) y2=mouse_y_position(no%) if x2=x3 and y2=y3 then return cls:2d_rectangle x1,y1,x2,y2 x3=mouse_x_position(no%) y3=mouse_y_position(no%) end_if return maintenant il faudrait pouvoir laisser le dessin en place pour en dessiner d'autres par-dessus, mais ça c'est moins évident. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection Dim 21 Nov 2010 - 17:30 | |
| Le but initial, c'était d'opérer une sélection. le but est atteint: maintenant que le rectangle est fixé, on peut utiliser les coordonnées pour travailler avec cette aire - couper, effacer, noircir, remplacer par autre chose etc.
Pour tracer d'autres rectangles, il suffira de définir des tableaux de coordonnées au lieu de vatiables simples, d'avoir une variable qui pointe dans les tableaux et incrémenter chaque fois qu'on fixe un rectangle. Bien sûr, pour contre-balancer l'effacement qui a lieu pour pouvoir "tirer" le rectangle en cours, il faut les réafficher chaque fois qu'on affiche maintenant le rectangle de sélection, mais avec 2d_pen_solid. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Sélection Dim 21 Nov 2010 - 17:49 | |
| Ou alors ne pas effacer à chaque fois, mais dessiner les rectangles avec 2d_line et 2d_poly_to. C'est embêtant de ne pas pouvoir faire de rectangles sans remplissage.
Mais c'est vrai que le but était la sélection, pas de faire des petits dessins. | |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: Sélection Dim 21 Nov 2010 - 22:23 | |
| Excellent ta sélection, j'ai essayé le code de maître Klaus. Bravo et merci Nicolas | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Sélection Lun 22 Nov 2010 - 13:26 | |
| L'inconvénient avec ce système c'est que si on charge une image dans le picture (pour pouvoir sélectionner une zone), elle est effacée à chaque clic de souris, alors on ne sait plus quoi sélectionner... | |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: Sélection Lun 22 Nov 2010 - 13:32 | |
| De toutes façons il n'y a pas de commande pour copier une zone d'une image, donc sélectionner une zone d'image ne servira à rien. Cette sélection ne pourra servir qu'à sélectionner des groupes de sprites ou de pictures ou d'objets c'est tout.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection Lun 22 Nov 2010 - 14:10 | |
| Oh si, c'est intéressant pour manipuler un picture. Cosmos70 je fait d'ailleurs très bien dans certains de ses programmes publiés. Il y a les fonctions COLOR_PIXEL_BLUE(b,x,y) COLOR_PIXEL_RED(b,x,y) COLOR_PIXEL_GREEN(b,x,y) qui retournent les valeurs RGB d'un pixel (x,y) de l'objet n (picture, form, ...) On peut dont lire les pixels à l'intérieur du rectangle sélectionné, on peut en faire quelque chose, on peut même les réécrire avec la commande 2D_POINT x,y qui permet de dessiner un point (xy) avec la couleur définie par 2D_PEN_COLOR r,g,b. Ainsi, le bout de code suivant "ternit" la couleur d'un point d'un certain pourcentage: - Code:
-
dim x%,y% picture 10 ' on suppose le picture chargé avec quelque chose d'utile
x% = 17 : y% = 33 2d_target_is 10 : ' toutes les action 2d vont dans picture 10 2d_pen_width 1 : écrire avec 1 seul pixel de largeur 2d_pen_color color_pixel_red(10,x%,y%)*10/100,color_pixel_green(10,x%,y%)*10/100,color_pixel_blue(10,x%,y%)*10/100 2d_point x%,y% : réécrire le point On peut bien sûr utiliser une séquence de ce style dans une boucle pour faire varier x% et y% dans les limites du rectangle choisi. On peut aussi décaler la portion sélectionnée de l'image en ajoutant un offset à x% et y% en écriture dans la commande 2d_point, on peut "effacer" la sélection en choisissant 255 ou 0 pour des valeurs de 2d_pen_color, etc. On peut vraiment travailler avec le contenu des picture en Panoramic ! | |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: Sélection Lun 22 Nov 2010 - 14:26 | |
| Tu as encore raison, décidément je parle trop vite, ça fait deux fois J'ai besoin de repos, vive les vacances Au fait, si on peut lire les pixels d'un picture et modifier les pixels d'un autre picture, on peut donc copier une portion d'image d'un picture vers un autre picture, chouette EDIT : Moins chouette pour ma copie d'image, puisque il faut que l'image à copier soit déjà affichée pour que ça marche hors dans mon cas l'image doit etre chargée seulement en mémoire mais pas affichée (c'est pour copier les différentes parties d'une animation vers une image de fond). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection Lun 22 Nov 2010 - 14:35 | |
| Seul moyen: charger l'image d'origine dans un picture caché (avec la commande hide n). Ainsi, le picture n'est pas visible mais utilisable pour le programme.
Mais attention : Gérer une animation de cette manière, pixel par pixel, dans une form ou un grand picture, ce sera très lent. Il vaut mieux bouger un sprite chargé de la bonne image à travers une scene_2d par la commande sprite_position n,x,y - c'est rapide. | |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: Sélection Lun 22 Nov 2010 - 14:39 | |
| Oui bouger le sprite je le fais dans mon jeu de vaisseau c'est rapide. Parfait pour le truc de l'image cachée merci ! Ceci dit tu as raison, pas bon pour l'animation la copie de pixels :/ Je vais tester le sprite_file_load en animation dés que j'en serais là dans mon code (en mode application) | |
| | | Invité Invité
| Sujet: Re: Sélection Ven 26 Nov 2010 - 23:45 | |
| - Rectangle fixe - Sélection transparente - Position de la souris dans la barre de titre - Code:
-
label time
dim x1,y1,x2,y2,x3,y3,truc
picture 1:width 1,400:height 1,400
2d_target_is 1
timer 2 timer_interval 2,1 on_timer 2,time
end
time: caption 0,"X "+str$(mouse_x_position(1))+" Y "+str$(mouse_y_position(1))
2d_pen_dot if mouse_left_down(1)=1 then file_save 1,"C:\Image.bmp":truc=1:x1=mouse_x_position(1):y1=mouse_y_position(1):2d_rectangle x1,y1,mouse_x_position(1),mouse_y_position(1) if mouse_left_up(1)=1 then file_load 1,"C:\Image.bmp":2d_pen_solid:2d_line x1,y1,x2,y1:2d_line x1,y2,x2,y2:2d_line x1,y1,x1,y2:2d_line x2,y1,x2,y2:file_save 1,"C:\Image.bmp":truc=0 if truc=1 x2=mouse_x_position(1) y2=mouse_y_position(1) if x2=x3 and y2=y3 then 2d_pen_color 0,0,0:2d_pen_width 1:return file_load 1,"C:\Image.bmp":2d_line x1,y1,x2,y1:2d_line x1,y2,x2,y2:2d_line x1,y1,x1,y2:2d_line x2,y1,x2,y2 x3=mouse_x_position(1) y3=mouse_y_position(1) end_if return |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection Sam 27 Nov 2010 - 0:50 | |
| Super ! Ca, ça s'appelle creuser un problème ! Il ne reste plus qu'à memoriser les coordonnées du rectangle dans une table, au moment de sa fixation, et on pourra jouer avec, colorer des zones avec floodfill, l'effacer etc. Très intéressant. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Sélection Sam 27 Nov 2010 - 13:33 | |
| Ah oui ! ça c'est intéressant Nicolas ! | |
| | | Contenu sponsorisé
| Sujet: Re: Sélection | |
| |
| | | | Sélection | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |