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
» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 23:33

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Pedro Alvarez Aujourd'hui à 22:45

» StratégoV8
par Jean Claude Aujourd'hui à 19:55

» probleme de touche (verr num)
par pascal10000 Aujourd'hui à 16:20

» Mah-Jong européen new-look
par jjn4 Aujourd'hui à 15:58

» track_bar circulaire
par Klaus Hier à 21:41

» Gestionnaire de Projets Panoramic
par Jean Claude Hier à 20:41

» Gestion de l'Unicode
par jean_debord Hier à 11:21

» Button_picture
par pascal10000 Jeu 14 Déc 2017 - 11:41

» Pourquoi le compilateur stagne
par Minibug Jeu 14 Déc 2017 - 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Jeu 14 Déc 2017 - 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Jeu 14 Déc 2017 - 10:03

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
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 : 1629
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 : 10275
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 : 6018
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 : 10275
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 : 6018
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 : 6018
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 : 10275
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 : 10275
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 : 10275
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 : 6018
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
-
» Comment faire une sélection multiple
» [Fermé] malwarebytes
» [Résolu] Texte impossible dans Outlook Express
» Sélection et position du curseur
» probleme de copier / coller action

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