FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» un nouveau editeur panobasic
par Jean Claude Aujourd'hui à 10:18

» Compilateur FBPano
par jean_debord Aujourd'hui à 10:07

» Le compilateur.
par Pedro Alvarez Aujourd'hui à 8:36

» COMPILATEUR V 0.9 beta 7 du 10 aout 2017
par Jack Hier à 20:23

» Pb 16 (en analyse): ON_CLOSE plante à l'exécution
par Jack Hier à 20:00

» Pb 15 (en analyse): TIMER_ON plante à l'exécution
par Jack Hier à 19:58

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

» Carte de France des régions
par Yannick Sam 12 Aoû 2017 - 21:33

» Pb 14 (en analyse): PRINT_LOCATE plante à l'exécution
par Jack Ven 11 Aoû 2017 - 22:37

» Petit avertissement [Mots réservés]
par papydall Ven 11 Aoû 2017 - 13:45

» Distances sur plan
par JL35 Jeu 10 Aoû 2017 - 21:29

» Tracé : Triangle, Carrée, Dents de scie, Sinusoïde redressée
par papydall Jeu 10 Aoû 2017 - 14:52

» Troncature dans une image
par JL35 Mer 9 Aoû 2017 - 13:45

» A chacun son point de vue
par papydall Mar 8 Aoû 2017 - 17:20

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Sélection

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Invité
Invité



MessageSujet: Sélection   Dim 21 Nov 2010 - 16: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
Revenir en haut Aller en bas
jjn4

avatar

Nombre de messages : 1594
Date d'inscription : 13/09/2009

MessageSujet: +++   Dim 21 Nov 2010 - 16: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 ?
scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection   Dim 21 Nov 2010 - 17: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection   Dim 21 Nov 2010 - 19: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection   Dim 21 Nov 2010 - 19: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection   Dim 21 Nov 2010 - 19: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
dragonno



Nombre de messages : 341
Localisation : Près de Toulouse
Date d'inscription : 22/01/2009

MessageSujet: Re: Sélection   Lun 22 Nov 2010 - 0:23

Excellent ta sélection, j'ai essayé le code de maître Klaus.

Bravo et merci Nicolas Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection   Lun 22 Nov 2010 - 15: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
dragonno



Nombre de messages : 341
Localisation : Près de Toulouse
Date d'inscription : 22/01/2009

MessageSujet: Re: Sélection   Lun 22 Nov 2010 - 15: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection   Lun 22 Nov 2010 - 16: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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
dragonno



Nombre de messages : 341
Localisation : Près de Toulouse
Date d'inscription : 22/01/2009

MessageSujet: Re: Sélection   Lun 22 Nov 2010 - 16:26

Tu as encore raison, décidément je parle trop vite, ça fait deux fois Wink
J'ai besoin de repos, vive les vacances Wink
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 Wink

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).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection   Lun 22 Nov 2010 - 16: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
dragonno



Nombre de messages : 341
Localisation : Près de Toulouse
Date d'inscription : 22/01/2009

MessageSujet: Re: Sélection   Lun 22 Nov 2010 - 16: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 Wink 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 Wink
(en mode application)

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Sélection   Sam 27 Nov 2010 - 1: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
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection   Sam 27 Nov 2010 - 2: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection   Sam 27 Nov 2010 - 15:33

Ah oui ! ça c'est intéressant Nicolas !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Sélection   

Revenir en haut Aller en bas
 
Sélection
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Sélection des émoticônes impossible
» Comment faire une sélection multiple
» [Fermé] malwarebytes
» [Résolu] Texte impossible dans Outlook Express
» Sélection et position du curseur

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Les inutilitaires-
Sauter vers: