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 pascal10000 Hier à 21:52

» 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

» Compilateur FBPano
par jean_debord Hier à 8:49

» 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

» Problème avec les chaines de caractères
par bignono Dim 6 Aoû 2017 - 9:33

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 | 
 

 Une grille sur l'écran

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
JL35



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

MessageSujet: Une grille sur l'écran   Jeu 28 Avr 2016 - 16:20

Code:
DIM x%,y%,w%,h%,i%,r%,g%,b%,wt%
w% = 96: h% = 106: ' dimensions (pixels) occupées par les raccourcis sur le bureau
r%=255: g%=255: b%=0: ' couleur des traits
wt% = 3: ' épaisseur des lignes (de 1 à ...)
HIDE 0
i% = 99
FOR x% = w% TO SCREEN_X STEP w%: ' lignes verticales
  i%=i%+1: FORM i%: BORDER_HIDE i%: TOP i%,0: LEFT i%,x%: WIDTH i%,wt%: HEIGHT i%,SCREEN_Y
  COLOR i%,r%,g%,b%
NEXT x%
FOR y% = h% TO SCREEN_Y STEP h%: ' lignes horizontales
  i%=i%+1: FORM i%: BORDER_HIDE i%: TOP i%,y%: LEFT i%,0: WIDTH i%,SCREEN_X: HEIGHT i%,wt%
  COLOR i%,r%,g%,b%
NEXT y%
WHILE SCANCODE = 0: PAUSE 100: SCANCODE = 0: END_WHILE
TERMINATE
Dessin d'un grille sur tout l'écran, aux dimensions des raccourcis (chez moi 96x106 pixels).
Une touche quelconque, ou un clic souris, pour l'effacer.
Bon d'accord, ça n'a pas un gros intérêt, mais après tout c'est un inutilitaire !


Dernière édition par JL35 le Jeu 28 Avr 2016 - 18:32, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4988
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une grille sur l'écran   Jeu 28 Avr 2016 - 18:05

Spectaculaire, et sans DLL.

J'ai beau analyser le code, qui est très simple, j'avoue que je n'y comprend rien.
Comment tu fais pour créer autant de form(s) transparents, je ne vois pas la commande....
Je veux et j'exige ton secret. Very Happy

Bravo.
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: Une grille sur l'écran   Jeu 28 Avr 2016 - 18:24

Salut Jean Claude,
comme j'ai dit, il n'y a aucun secret, ce ne sont pas des Form transparents, mais des Forms réduits à leur plus simple expression.
Chaque ligne est un Form à part, d'une épaisseur d'un seul pixel dans un sens et de la taille de l'écran dans l'autre sens.
Chaque élément des boucles crée une des lignes, il y a donc autant de Forms que de lignes, c'est très simple.

La seule astuce (enfin, constatation), c'est d'avoir réalisé que l'on peut créer un Form d'un seul pixel d'épaisseur.

J'ai édité pour ajouter la possibilité de moduler l'épaisseur des traits (variable wt%). Je l'ai mis à 3, mais ça peut être de 1 à ...x
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4988
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une grille sur l'écran   Jeu 28 Avr 2016 - 18:51

Bravo, superbe astuce.
Il faut quand même avoir un esprit super tordu pour penser à faire des FORM(s) de 1Px. Very Happy
Des FORM(s) martiens quoi! alien
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: Une grille sur l'écran   Jeu 28 Avr 2016 - 19:00

Eh, je ne sais pas si j'ai l'esprit tordu (se connait-on soi-même ?), mais si j'avais su que c'était possible je l'aurais fait plus tôt !

Tiens, une petite sub pour faire des lignes où on veut, n'importe où sur l'écran, de l'épaisseur, de la longueur et de la couleur qu'on veut (mais exclusivement horizontales ou verticales, je n'ai pas encore trouvé comment faire des Form en biais Very Happy , quoique... j'ai une vague idée...).
On peut par exemple faire un cadre tout autour de l'écran, ou n'importe quoi qui puisse venir à l'esprit (tordu).
Code:
DIM x1%,y1%,x2%,y2%,e%,rgb%

x1% = 0: y1% = 100: x2% = SCREEN_X: y2% = y1%
e% = 9: rgb% = 255*256*256
HIDE 0
FOR y1% = 100 TO SCREEN_Y STEP 100
    Trait(x1%,y1%,x2%,y1%,e%,rgb%): ' lignes horizontales
NEXT y1%
WHILE SCANCODE = 0: PAUSE 100: SCANCODE = 0: END_WHILE
TERMINATE
' ==============================================================================
SUB Trait(x1%,y1%,x2%,y2%,e%,rgb%)
  ' Tracé d'une ligne exclusivement horizontale ou verticale sur tout l'écran
  ' épaisseur e% pixels, couleur rgb% = R*65536+G*256+B
  DIM_LOCAL f%,r%,g%,b%
  IF x2%<>x1% AND y2%<>y1% THEN EXIT_SUB: ' droite oblique, inadmis
  f% = 900: WHILE OBJECT_EXISTS(f%)=1: f%=f%+1: END_WHILE
  FORM f%: BORDER_HIDE f%: TOP f%,y1%: LEFT f%,x1%
  IF x2%<>x1%: ' trait horizontal
      WIDTH f%,x2%-x1%: HEIGHT f%,e%
  ELSE: ' trait vertical
      WIDTH f%,e%: HEIGHT f%,y2%-y1%
  END_IF
  r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255)
  COLOR f%,r%,g%,b%
END_SUB
' ==============================================================================
(clic n'importe où pour quitter)
Et tout ça en Panoramic pur (et dur).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4988
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une grille sur l'écran   Jeu 28 Avr 2016 - 19:43

Je crois que je vais mettre une vilaine grille noire verticale, genre barreaux de prison sur le PC portable de ma femme.
Je la vois déjà m'appeller "au secours, il y a un truc bizarre sur mon écran..." Very Happy

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7961
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 28 Avr 2016 - 20:44

Il est d' humeur taquine le garçon.
Méfies toi du canapé si elle s' aperçoit de la supercherie...
lol!
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: Une grille sur l'écran   Jeu 28 Avr 2016 - 20:46

Quelle cruauté ! mais bon, si les conséquences sont heureuses pour toi...

Maintenant, passons aux lignes obliques sur l'écran, alors là c'est encore plus tordu, chaque point de la ligne est un Form, donc si la ligne est un peu longue ça met du temps à se mettre en place et ça papillonne dans tous les sens jusqu'au dessin complet.
Et tiens-toi bien Jean Claude, si l'épaisseur du trait est de 1 pixel chaque Form mesure 1 x 1 pixel ! quel gâchis !

Bon, c'est plus un exercice de style qu'autre chose:
Code:
DIM x1%,y1%,x2%,y2%,e%,rgb%
HIDE 0
e% = 3: rgb% = 255*256*256
x1% = 100: y1% = 300: x2% = 500: y2% = 200
Trait_1(x1%,y1%,x2%,y2%,e%,rgb%)
WHILE SCANCODE = 0: PAUSE 100: SCANCODE = 0: END_WHILE: ' clic pour sortir
TERMINATE
' ==============================================================================
SUB Trait_1(x1%,y1%,x2%,y2%,e%,rgb%)
  ' Tracé d'une ligne sur tout l'écran, horizontale, verticale ou oblique
  ' épaisseur e% pixels, couleur rgb% = R*65536+G*256+B
  DIM_LOCAL f%,x%,y%,r%,g%,b%,a,q%
  r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255)
  f% = 900: WHILE OBJECT_EXISTS(f%)=1: f%=f%+1: END_WHILE
  IF x2%<>x1% AND y2%<>y1%: ' trait oblique
      a = (y1%-y2%)/(x1%-x2%): q% = y2%-a*x2%
      FOR x% = x1% TO x2% step e%
          y% = a*x%+q%
          FORM f%: BORDER_HIDE f%: TOP f%,y%: LEFT f%,x%: WIDTH f%,e%: HEIGHT f%,e%
          COLOR f%,r%,g%,b%
          f% = f%+1
      NEXT x%
  ELSE
      FORM f%: BORDER_HIDE f%: TOP f%,y1%: LEFT f%,x1%
      IF x2%<>x1%: ' trait horizontal
          WIDTH f%,x2%-x1%: HEIGHT f%,e%
      ELSE: ' trait vertical
          WIDTH f%,e%: HEIGHT f%,y2%-y1%
      END_IF
      COLOR f%,r%,g%,b%
  END_IF
END_SUB
' ==============================================================================
PS plus la ligne est épaisse et plus ça va vite.

PS2 23h00 réparé un petit bug


Dernière édition par JL35 le Ven 29 Avr 2016 - 0:00, édité 2 fois
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: Une grille sur l'écran   Jeu 28 Avr 2016 - 20:47

On s'est croisés ygeronimi.
Du canapé... ou du rouleau à pâtisserie.

Tu peux aussi lui barrer l'écran en croix, elle doit bien avoir des tâches ménagères plus urgentes que de passer son temps sur l'ordinateur  Very Happy :
Code:
DIM x1%,y1%,x2%,y2%,e%,rgb%
HIDE 0
e% = 37: rgb% = 255*256*256
x1% = 0: y1% = 0: x2% = SCREEN_X: y2% = SCREEN_Y
Trait_1(x1%,y1%,x2%,y2%,e%,rgb%)
x1% = 0: y1% = SCREEN_Y: x2% = SCREEN_X: y2% = 0
Trait_1(x1%,y1%,x2%,y2%,e%,rgb%)
WHILE SCANCODE = 0: PAUSE 100: SCANCODE = 0: END_WHILE: ' clic pour sortir
TERMINATE
' ==============================================================================
SUB Trait_1(x1%,y1%,x2%,y2%,e%,rgb%)
  ' Tracé d'une ligne sur tout l'écran, horizontale, verticale ou oblique
  ' épaisseur e% pixels, couleur rgb% = R*65536+G*256+B
  DIM_LOCAL f%,x%,y%,r%,g%,b%,a,q%
  r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255)
  f% = 900: WHILE OBJECT_EXISTS(f%)=1: f%=f%+1: END_WHILE
  IF x2%<>x1% AND y2%<>y1%: ' trait oblique
      a = (y1%-y2%)/(x1%-x2%): q% = y2%-a*x2%
      FOR x% = x1% TO x2% step e%
          y% = a*x%+q%
          FORM f%: BORDER_HIDE f%: TOP f%,y%: LEFT f%,x%: WIDTH f%,e%: HEIGHT f%,e%
          COLOR f%,r%,g%,b%
          f% = f%+1
      NEXT x%
  ELSE
      FORM f%: BORDER_HIDE f%: TOP f%,y1%: LEFT f%,x1%
      IF x2%<>x1%: ' trait horizontal
          WIDTH f%,x2%-x1%: HEIGHT f%,e%
      ELSE: ' trait vertical
          WIDTH f%,e%: HEIGHT f%,y2%-y1%
      END_IF
      COLOR f%,r%,g%,b%
  END_IF
END_SUB
' ==============================================================================
PS 23h00 réparé un petit bug (une ligne sautée, cas ligne droite)


Dernière édition par JL35 le Ven 29 Avr 2016 - 0:02, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4988
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une grille sur l'écran   Jeu 28 Avr 2016 - 21:10

L'écran barré par une croix bien rouge: je connais une bru à qui ça ne ferait pas de mal, elle ferait moins chauffer sa carte bancaire. Very Happy

Il y aura peut-être un canapé, mais pas pour ce que vous pensez médisants que vous êtes, car arrivant avec ma cape de dépanneur et un clic pour enlever les vilains barreaux noirs, elle reconnaîtra son héros (ou Éros). Je ne vous raconte pas la suite. geek


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: Une grille sur l'écran   Jeu 28 Avr 2016 - 22:17

C'était bien à ça que je pensais... après, c'est normal que tu ne racontes pas la suite, c'est du domaine de l'intime Very Happy
Comme quoi, l'informatique a du bon, même pour la paix des ménages !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Une grille sur l'écran   Jeu 28 Avr 2016 - 22:19

@ Tous et particulièrement @ celui qui aime trop sa femme pour lui jouer des tours avec son PC.

Pour dessiner directement sur le bureau, il y a mieux que l’astuce de celui dont on dit qu’il a "l’esprit super tordu pour faire des FORM de 1PX"


Code:

rem ============================================================================
rem        Dessiner sur le bureau
rem ============================================================================

 Dessiner_Sur_Le_Bureau()
end
rem ============================================================================
SUB Dessiner_Sur_Le_Bureau()
    dim_local hWnd%,HDC_Bureau% , ret% ,i%
    hWnd% = handle(0)
    width 0,100 : height 0,100
    dll_on "user32"
    HDC_Bureau% = dll_call1("GetDC",0) : ' Handle Device Control du Bureau
    dll_off
    dll_on "GDI32"
    for i% = 1 to screen_x step 20
        ret% = dll_call4("MoveToEx",HDC_Bureau%,i%,0,0)
        ret% = dll_call3("LineTo",HDC_Bureau%,i%,screen_y)
    next i%
    for i% = 1 to screen_y step 20
        ret% = dll_call4("MoveToEx",HDC_Bureau%,0,i%,0)
        ret% = dll_call3("LineTo",HDC_Bureau%,screen_x,i%)
    next i%
    dll_off
    dll_on "user32"
    ret% = dll_call2("ReleaseDC",0,HDC_Bureau%)
    dll_off

END_SUB
rem ============================================================================


Pour effacer la grille tracée sur l'écran, je vous laisse découvrir par vous-même. tongue
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Une grille sur l'écran   Jeu 28 Avr 2016 - 22:26

Oui mais là tu triches Papydall ! affraid

Notre amis propose une solution 'light' pure Panoramic ! Laughing Laughing
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: Une grille sur l'écran   Jeu 28 Avr 2016 - 22:35

J'allais le dire ! forcément, avec une dll système, on ne joue plus dans la même cour !

De plus:
- pour l'effacement des traits, peux-tu le faire par programme ?
- peux-tu moduler l'épaisseur et la couleur des traits ?


Dernière édition par JL35 le Jeu 28 Avr 2016 - 22:43, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Une grille sur l'écran   Jeu 28 Avr 2016 - 22:42

Une DLL native n’enlève rien à la "lighteté" ( waou ! la belle trouvaille) de la solution.
Bon, si tu n’aimes pas, n’aime pas.
Mais tu peux aimer ça :

Code:

rem ============================================================================
rem        Dessiner sur le bureau
rem ============================================================================

 Dessiner_Sur_Le_Bureau()
end
rem ============================================================================
SUB Dessiner_Sur_Le_Bureau()
    dim_local hWnd%,HDC_Bureau% , ret% ,i%
    hWnd% = handle(0)
    width 0,100 : height 0,100
    dll_on "user32"
    HDC_Bureau% = dll_call1("GetDC",0) : ' Handle Device Control du Bureau
    dll_off
    dll_on "GDI32"
    for i% = 1 to screen_x step 20
        ret% = dll_call4("MoveToEx",HDC_Bureau%,i%,0,0)
        ret% = dll_call3("LineTo",HDC_Bureau%,i%,screen_y)
    next i%
    for i% = 1 to screen_y step 20
        ret% = dll_call4("MoveToEx",HDC_Bureau%,0,i%,0)
        ret% = dll_call3("LineTo",HDC_Bureau%,screen_x,i%)
    next i%
    for i% = 1 to 25
        ret% = dll_call5("Ellipse",HDC_Bureau%,i%*10,i%*10,i%*20,i%*25)
        ret% = dll_call5("Ellipse",HDC_Bureau%,1000-i%*10,i%*10,1000-i%*20,i%*25)
        ret% = dll_call5("Ellipse",HDC_Bureau%,i%*10,1000-i%*10,i%*20,1000-i%*25)
        ret% = dll_call5("Ellipse",HDC_Bureau%,1000-i%*10,1000-i%*10,1000-i%*20,1000-i%*25)
    next i%
    dll_off
    dll_on "user32"
    ret% = dll_call2("ReleaseDC",0,HDC_Bureau%)
    dll_off

END_SUB
rem ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



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

MessageSujet: Re: Une grille sur l'écran   Jeu 28 Avr 2016 - 22:45

Bof ! un peu chargé à mon goût...
et il manque la glace dans les cornets.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4988
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une grille sur l'écran   Ven 29 Avr 2016 - 8:53

Hier soir, j'ai pensé que JL35 et Papydall devraient s'allier pour écrire sur le bureau, et ce matin je découvre qu'on y est presque.
Je me disais qu'avec l'astuce de JL35 et les dll systèmes de Papydall, on pourrait reproduire les bulles qui se baladent sur un écran de veille...

Je vois qu'on s'en rapproche.

A+

Au fait,  JL35, j'ai super bien dormis... Very Happy
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: Une grille sur l'écran   Ven 29 Avr 2016 - 14:14

Petit canaillou !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4988
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une grille sur l'écran   Ven 29 Avr 2016 - 15:07

Non, pas petit, GRAND CANAILLOU ! Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7961
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 29 Avr 2016 - 15:19

Là, je crois que l' on se vaut tous... Laughing
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: Une grille sur l'écran   Ven 29 Avr 2016 - 16:09

Tous, c'est vrai, sauf moi, sérieux comme un pape !

Si ça t'amuse Jean Claude (euh, à part le reste...), une petite sub pour reporter l'image d'un Picture sur l'écran total:
Code:
HIDE 0

PICTURE 10: WIDTH 10,30: HEIGHT 10,30
  2D_TARGET_IS 10: COLOR 10,0,255,0: 2D_FILL_COLOR 0,0,0: ' transparence = noir
  2D_RECTANGLE 2,2,WIDTH(10)-2,HEIGHT(10)-2: ' carré noir central
  2D_PEN_WIDTH 3
  2D_PEN_COLOR 255,0,0: 2D_LINE 0,0,30,30
  2D_PEN_COLOR 0,0,255: 2D_LINE 0,30,30,0
  
Report(10,5): ' report de l'image du picture 10 sur l'écran, avec zoom x5

WHILE SCANCODE = 0: PAUSE 100: SCANCODE = 0: END_WHILE: ' clic pour sortir
TERMINATE
' ==============================================================================
SUB Report(p%,zoom%)
  ' Report de l'image du picture p% sur l'écran principal, x facteur zoom%
  ' Couleur de transparence: noir
  ' L'image est centrée sur l'écran
  DIM_LOCAL f%,xd%,yd%,x1%,y1%,x%,y%,r%,g%,b%
  f% = 900: WHILE OBJECT_EXISTS(f%)=1: f%=f%+1: END_WHILE
  xd% = (SCREEN_X-zoom%*WIDTH(p%))/2: yd% = (SCREEN_Y-zoom%*HEIGHT(p%))/2: ' centré
  FOR y1% = 0 TO HEIGHT(p%)-1
      y% = yd%+y1%*zoom%
      FOR x1% = 0 TO WIDTH(p%)-1
          r%=COLOR_PIXEL_RED(p%,x1%,y1%): g%=COLOR_PIXEL_GREEN(p%,x1%,y1%)
          b%=COLOR_PIXEL_BLUE(p%,x1%,y1%)
          IF r%<>0 OR g%<>0 OR b%<>0
              x% = xd%+x1%*zoom%
              f% = f%+1
              FORM f%: HIDE f%: BORDER_HIDE f%: TOP f%,y%: LEFT f%,x%: WIDTH f%,zoom%
                       HEIGHT f%,zoom%: COLOR f%,r%,g%,b%: SHOW f%
          END_IF
      NEXT x1%
  NEXT y1%
END_SUB
' ==============================================================================

L'image (contenu) d'un Picture est reportée intégralement sur l'écran/
Le principe est le même que ci-dessus: 1 pixel -> 1 Form
La recopie sera centrée sur l'écran.
Il y a un facteur de zoom appliqué, de 1 à n, dans le cas d'amplification les pixels seront transformés en carrés de la taille voulue.
La couleur de transparence appliquée est le noir absolu, comme pour les sprites.
Comme d'hab, un clic pour quitter.

Quelques remarques, quand même:
- J'ai choisi de centrer la copie, mais on peut l'afficher où on veut.
- Le temps d'exécution est assez long, avec plein de papillotements (affichages temporaires des Forms), et dépend d'abord des dimensions de l'image initiale, et du nombre de pixels actifs (non transparents), le facteur de zoom n'intervient pas, mais plus il est fort, plus l'image est dégradée (gros carrés).
- On pourrait imaginer d'afficher du texte de cette façon (écrit préalablement dans le picture source avec transparence noire), mais je pense que ça deviendrait vite prohibitif: Jean Claude il faudra que tu t'y prennes la veille pour le lendemain, pour afficher sur le pc de ton épouse: 'Momentanément hors service', avec les conséquences qu'on peut imaginer. Very Happy


Dernière édition par JL35 le Ven 29 Avr 2016 - 18:15, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

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

MessageSujet: +++   Ven 29 Avr 2016 - 17:11

Alors là, bravo pour toutes ces inscriptions qui vadrouillent sur l'écran !
C'est carrément martien !
Laughing Laughing alien alien alien Laughing Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
Jean Claude

avatar

Nombre de messages : 4988
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une grille sur l'écran   Ven 29 Avr 2016 - 17:42

J'ai mis un display avant l'appel de la sub report.
Il n'y a plus de scintillements, on ne voit plus que le traçage sur l'écran. Bien sûr, il faut attendre avant de faire quoi que se soit, pas de clic, pas d'appuis sur un touche, sinon on ne verra pas le dessin.

A+
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: Une grille sur l'écran   Ven 29 Avr 2016 - 18:05

Tiens bizarre ! j'ai eu une fausse joie en te lisant, mais non seulement je ne vois pas ce qu'un display peut provoquer, mais expérience faite chez moi ça ne change rien du tout, j'ai toujours l'affichage provisoire des forms qui sautille !

Tu dis bien, dans l'ordre:
display
Report(10,5)
?

PS ça scintille moins si je fais dans la sub
FORM f%: HIDE f%: BORDER...
et après le COLOR f%,r%,g%,b%: SHOW f%
On n'a plus le scintillement au niveau du dessin, seulement dans le coin supérieur gauche. Je fais cette modif ci-dessus.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4988
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une grille sur l'écran   Ven 29 Avr 2016 - 18:15

Ben je n'y comprend plus rien.
Le display ne marche plus Question Question Question . Bon, fausse alerte.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Une grille sur l'écran   

Revenir en haut Aller en bas
 
Une grille sur l'écran
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Comment interdire à l'utilisateur de mettre la fenêtre en " grand écran " ? [RESOLU]
» intégré une anim en fon décran pc
» Disparition des onglets dans l'écran du Dispacher
» Afficher une image un plein écran
» [Résolu] impressions écran

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: