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 |
|
|
| Afficher un texte sur l'écran total | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 21:11 | |
| Je veux dire sur la totalité de l'écran du pc (rien à voir avec de la crème solaire...) C'est un peu 'bestial' comme procédé, et très long à exécuter, mais je ne connais pas d'autre moyen. Ça n'a pas une grande utilité, à part peut-être pour faire une blague, souhaiter un anniversaire, ou autre. Le principe: créer un Form pour chaque pixel du texte et le positionner sur l'écran, avec sa couleur (couleur du texte), et une taille fonction du facteur de zoom éventuel (1x1 pixel si pas de zoom). - Code:
-
DIM t$ ' HIDE 0 WIDTH 0,200: HEIGHT 0,80: BORDER_SMALL 0 t$ = TIME$ Textecran(800,100,"Salut !","Arial",32,255*65536,"GI",2) PRINT t$+" -> "+TIME$: ' pour voir la durée d'exécution END
SUB Textecran(x1%,y1%,txt$,fnt$,sz%,rgb%,enr$,zoom%) ' Affichage en x1%,y1% absolus d'un texte txt$ sur tout l'écran ' Police fnt$, taille sz%, couleur rgb%, enrichissements 'GIS', facteur zoom zoom% DIM_LOCAL f%,p%,wt%,ht%,x%,y%,r%,g%,b%,e%,i%,j%,k% r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255) p%=900: PICTURE p%: HIDE p%: FONT_NAME p%,fnt$: FONT_SIZE p%,sz%: FONT_COLOR p%,r%,g%,b% IF INSTR(enr$,"G") > 0 THEN FONT_BOLD p% IF INSTR(enr$,"I") > 0 THEN FONT_ITALIC p% IF INSTR(enr$,"S") > 0 THEN FONT_UNDERLINE p% wt% = TEXT_WIDTH(txt$,p%): ht% = TEXT_HEIGHT(txt$,p%):WIDTH p%,wt%: HEIGHT p%,ht% PRINT_TARGET_IS p%: PRINT txt$ f% = p%+1 FOR y% = 0 TO ht% FOR x% = 0 TO wt% i% = COLOR_PIXEL_RED(p%,x%,y%): j% = COLOR_PIXEL_GREEN(p%,x%,y%) k% = COLOR_PIXEL_BLUE(p%,x%,y%) IF i% = r% AND j% = g% AND k% = b% FORM f%: BORDER_HIDE f%: WIDTH f%,zoom%: HEIGHT f%,zoom% TOP f%,y1%+y%*zoom%: LEFT f%,x1%+x%*zoom% COLOR f%,r%,g%,b% f% = f%+1 END_IF NEXT x% caption 0,"y="+str$(y%)+"/"+str$(ht%): ' pour suivre la progresion NEXT y% caption 0,"Form= "+str$(f%): ' dernier Form généré PRINT_TARGET_IS 0: DELETE p% END_SUB Remarque: dans l'exemple ci-dessus (affichage de 'Salut !' couleur rouge, taille 32 avec zoom x2: gras+italique), la durée d'affichage est (chez moi) de 5 minutes, avec environ 1350 objets Form générés ! Évidemment l'affichage n'est effectif que tant que le programme est actif, il s'efface si on ferme le programme. Je répète, c'est un gadget... y a-t'il un autre moyen d'écrire sur tout l'écran ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 21:16 | |
| Où est-ce que tu veux écrire, exactement ? Dans l'image de fond du bureau ? Dans une fenêtre qui se superpose à tout (éventuellement transparente pour les parties non utlilisées), un peu à la manière dont Windows demande l'autorisation avant l'installation d'un programme ? | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 21:22 | |
| Bonsoir Klaus, en fait n'importe où sur l'écran du moniteur, en surimpression de ce qui est déjà affiché (icônes, etc.). Donc éventuellement dans une fenêtre transparente, mais juste le texte, pas de cadre. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 21:45 | |
| Et on doit pouvoir continuer à cliquer là où ce n'est pas écrit, ou est-ce que les zones transparentes ne le sont que pour la vue, pas pour les clics ? | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 21:51 | |
| Je n'ai pas de contrainte particulière, c'est juste un gadget... mais dans mon esprit (et avec la méthode que j'ai utilisée), ça ne gêne pas pour les clics, on peut cliquer à travers le texte affiché. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 22:00 | |
| Une première réponse pourrait être ceci (avec une fonction existante de KGF.dll): - Code:
-
dim res%
border_hide 0 full_space 0
font_size 0,24 : font_bold 0 print_locate 300,300 print "Panoramic"
dll_on "KGF.dll" res% = dll_call2("WindowTranparency",handle(0),127)
end Le second paramètre est le degré d'opacité (0...255) | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 22:12 | |
| Ca fait un truc bizarre chez moi, il y a bien affichage fugitif de 'Panoramic', puis une espèce d'effet de transparence qui reste figé sur tout l'écran mais le texte a disparu.
Mais ne te casse pas la tête avec ça, ça a vraiment très peu (ou même pas du tout !) d'utilité ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 22:15 | |
| Autre solution: Tu télécharges KGF.dll de mon WebDav, dossier DLLs, et tu fais ceci: - Code:
-
dim res%
border_hide 0 full_space 0 color 0,255,255,255 : ' <========= couleur de transparence, à choisir librement !
font_size 0,24 : font_bold 0 print_locate 300,300 print "Panoramic"
dll_on "KGF.dll" ' 2ème paramètre: couleur de transparence hex("BBGGRR") ' 3ème paramètre: 0 (transparent) ... 255 (opaque) res% = dll_call3("SetTranslucent",handle(0),hex("FFFFFF"),0) res% = dll_call2("WindowTopMost",handle(0),1) height 0,height(0) - 40
end
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 22:17 | |
| - Citation :
- Ca fait un truc bizarre chez moi, il y a bien affichage fugitif de 'Panoramic', puis une espèce d'effet de transparence qui reste figé sur tout l'écran mais le texte a disparu.
J'ai oublié d'ajouter TO_FOREGROUND 0... Mais regarde ce que j'ai posté ci-dessus... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 22:26 | |
| Ben, là je n'ai plus aucun affichage, to_foreground ou pas... (sauf le Panoramic fugitif)... j'ai bien rechargé kgf.dll
Le Form 0 est bien là, sur tout l'écran, invisible, mais le texte est lui aussi invisible. | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 22:50 | |
| J'avais fait une démo sur la transparence, ici | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 22:55 | |
| Effectivement, j'étais même intervenu mais je ne m'en souvenais plus... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 23:48 | |
| - Citation :
- Le Form 0 est bien là, sur tout l'écran, invisible, mais le texte est lui aussi invisible.
Non, charge la DLL de mon WebDav, dossier DLLs, et essaie: - Code:
-
label sortir dim res%
border_hide 0 full_space 0 color 0,255,255,255 : ' <========= couleur de transparence, à choisir librement !
font_size 0,24 : font_bold 0 print_locate 300,300 print "Panoramic"
dll_on "KGF.dll" ' 2ème paramètre: couleur de transparence hex("BBGGRR") ' 3ème paramètre: 0 (transparent) ... 255 (opaque) res% = dll_call3("SetTranslucent",handle(0),hex("FFFFFF"),0) res% = dll_call2("WindowTopMost",handle(0),1) height 0,height(0) - 40 button 1 : caption 1,"Sortir" : on_click 1,sortir : width 1,150 : height 1,30
end sortir: terminate tu obtiens: Tout ce qui n'est pas blanc dans cet exemple, sera affiché. Tout ce qui est blanc, disparaît. Tu peux choisir la couleur de transparence librement. Si tu veux afficher du blanc, tu peux utiliser - Code:
-
color 0,255,255,254 ... res% = dll_call3("SetTranslucent",handle(0),hex("FEFFFF"),0)
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Afficher un texte sur l'écran total Jeu 22 Mar 2018 - 23:59 | |
| Je viens de publier officiellement une nouvelle version de KGF.dll avec cette fonction. La doc est à jour. Tout est disponible sur le WebDav et sur mes deux sites Web, comme d'habitude. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Afficher un texte sur l'écran total Ven 23 Mar 2018 - 10:53 | |
| Et voici une horloge en sur-impressioin sur l'écran, avec uhn bouton de sortie: - Code:
-
label sortir, tick dim res%
border_hide 0 color 0,255,255,255 : ' <========= couleur de transparence, à choisir librement ! timer 1 : timer_interval 1,1000 : on_timer 1,tick
font_size 0,24 : font_bold 0
dll_on "KGF.dll" ' 2ème paramètre: couleur de transparence hex("BBGGRR") ' 3ème paramètre: 0 (transparent) ... 255 (opaque) res% = dll_call3("SetTranslucent",handle(0),hex("FFFFFF"),0) res% = dll_call2("WindowTopMost",handle(0),1) button 2 : caption 2,"Sortir" : on_click 2,sortir : width 2,150 : height 2,30
end sortir: terminate tick: print_locate 10,40 print time$ print_locate 10,80 print date$ return | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Afficher un texte sur l'écran total Ven 23 Mar 2018 - 13:18 | |
| Effectivement, là ça marche, chapeau ! Une horloge, c'est une bonne idée. Et question rapidité d'affichage, y'a pas photo ! Au moins 5 minutes avec ma méthode, une fraction de seconde avec KGF.dll. Au résultat (texte quelconque, ou horloge Klaus): (-> ajuster le chemin de KGF.dll) - Code:
-
dim txt$,fnt$,sz%,enr$,rgb%,rc$ rc$ = CHR$(13)+CHR$(10) txt$ = "Bon Panoramic"+rc$+" à tous !" fnt$ = "Arial" sz% = 128 enr$ = "BI" rgb% = 65536*255+256*255: ' jaune Text_Ecran(100,100,txt$,fnt$,sz%,enr$,rgb%): Terminate
' Horloge(100,100,"Arial",24,"G",rgb%) End ' ============================================================================== SUB Horloge(x%,y%,fnt$,sz%,enr$,rgb%) ' Afficher une horloge numérique en x% y% de l'écran total ' police fnt$, taille sz%,enrichissements enr$, couleur rgb% (65536*R+256*G+B) LABEL Tick,Finh DIM r%,g%,b%,yd%,lt%,ff%,res% r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255) BORDER_HIDE 0: FULL_SPACE 0: FONT_NAME 0,fnt$: FONT_SIZE 0,sz%: FONT_COLOR 0,r%,g%,b% COLOR 0,255,255,255 IF INSTR(enr$,"G") > 0 THEN FONT_BOLD 0 IF INSTR(enr$,"I") > 0 THEN FONT_ITALIC 0 IF INSTR(enr$,"S") > 0 THEN FONT_UNDERLINE 0 yd% = y%+TEXT_HEIGHT("1",0): lt% = TEXT_WIDTH(DATE$,0) DLL_ON "C:\PANORAMIC\KGF\KGF.dll" ' 2ème paramètre: couleur de transparence hex("BBGGRR") ' 3ème paramètre: 0 (transparent) ... 255 (opaque) res% = dll_call3("SetTranslucent",handle(0),hex("FFFFFF"),0) res% = dll_call2("WindowTopMost",handle(0),1) BUTTON 1: TOP 1,y%+7: LEFT 1,x%+lt%-20: WIDTH 1,20: HEIGHT 1,25: CAPTION 1,"X" FONT_SIZE 1,12: FONT_BOLD_OFF 1: ON_CLICK 1,Finh WHILE ff% = 0: GOSUB Tick: PAUSE 1000: END_WHILE DLL_OFF: TERMINATE Tick: PRINT_LOCATE x%,y%: PRINT TIME$ PRINT_LOCATE x%,yd%: PRINT DATE$ RETURN Finh: ff% = 1 RETURN END_SUB ' ============================================================================== SUB Text_Ecran(x%,y%,txt$,fnt$,sz%,enr$,rgb%) ' Afficher le texte txt$ en x% y% de l'écran total ' Police fnt$, taille sz%,enrichissements enr$, couleur rgb% (65536*R+256*G+B) ' Texte multilignes éventuel -> chr$(13)+chr$(10) ' Cliquer sur la petite croix (en fin de texte) pour effacer LABEL Fintec DIM r%,g%,b%,lt%,ht%,ff%,res%,k% r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255) BORDER_HIDE 0: FULL_SPACE 0: FONT_NAME 0,fnt$: FONT_SIZE 0,sz%: FONT_COLOR 0,r%,g%,b% COLOR 0,255,255,255 IF INSTR(enr$,"G") > 0 THEN FONT_BOLD 0 IF INSTR(enr$,"I") > 0 THEN FONT_ITALIC 0 IF INSTR(enr$,"S") > 0 THEN FONT_UNDERLINE 0 ht% = TEXT_HEIGHT(txt$,0) DLL_ON "C:\PANORAMIC\KGF\KGF.dll" ' 2ème paramètre: couleur de transparence hex("BBGGRR") ' 3ème paramètre: 0 (transparent) ... 255 (opaque) res% = dll_call3("SetTranslucent",handle(0),hex("FFFFFF"),0) res% = dll_call2("WindowTopMost",handle(0),1) k% = INSTR(txt$,CHR$(13)) WHILE k% > 0: ' si plusieurs lignes PRINT_LOCATE x%,y%: PRINT LEFT$(txt$,k%-1): txt$ = RIGHT_POS$(txt$,k%+2) k% = INSTR(txt$,CHR$(13)): y% = y%+ht% END_WHILE PRINT_LOCATE x%,y%: PRINT txt$: lt% = TEXT_WIDTH(txt$,0) BUTTON 1: TOP 1,y%+ht%-sz%/2: LEFT 1,x%+lt%: WIDTH 1,20: HEIGHT 1,25: CAPTION 1,"X" FONT_SIZE 1,12: FONT_BOLD_OFF 1: ON_CLICK 1,Fintec WHILE ff% = 0: PAUSE 1000: END_WHILE DLL_OFF: EXIT_SUB Fintec: ff% = 1 RETURN END_SUB ' ============================================================================== Le programme reste actif pendant la durée de l'affichage, pour le tuer il faut cliquer sur le petit bouton à droite, avec la croix. | |
| | | Contenu sponsorisé
| Sujet: Re: Afficher un texte sur l'écran total | |
| |
| | | | Afficher un texte sur l'écran total | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |