Mai 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 | 31 | | | Calendrier |
|
| | PRINT_LOCATE | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: PRINT_LOCATE Ven 8 Avr 2022 - 13:28 | |
| - Code:
-
DIM x PICTURE 1: WIDTH 1,200: 2D_TARGET_IS 1: PRINT_TARGET_IS 1 x = 20: 2D_LINE x,0,x,100: FONT_SIZE 1,8 PRINT_LOCATE x-2,5: PRINT "x" PRINT_LOCATE x+1,30: PRINT "Print Locate x+1" PRINT_LOCATE x+2,50: PRINT "Print Locate x+2" PRINT_LOCATE x+3,70: PRINT "Print Locate x+3" Pourquoi l'affichage demandé en x+1 commence-t'il systématiquement en x, ou même x-1 comme ici suivant la taille de la police ? | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: PRINT_LOCATE Ven 8 Avr 2022 - 14:27 | |
| Bonjour JL35 ! Ben non pour moi il y a bien un décalage de 1 pixel. Essaies ton code mais avec un décalage de 10 et cela fonctionne parfaitement selon moi : - Code:
-
DIM x PICTURE 1: WIDTH 1,200: 2D_TARGET_IS 1: PRINT_TARGET_IS 1 x = 20: 2D_LINE x,0,x,100: FONT_SIZE 1,8 PRINT_LOCATE x-20,5: PRINT "x" PRINT_LOCATE x+10,30: PRINT "Print Locate x+10" PRINT_LOCATE x+20,50: PRINT "Print Locate x+20" PRINT_LOCATE x+30,70: PRINT "Print Locate x+30"
| |
| | | silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: PRINT_LOCATE Ven 8 Avr 2022 - 15:25 | |
| Le décalage, c'est peut être parceque la police ne commence pas au bord de sa matrice, mais qu'elle est décalée de 1(ou plusieurs) pixel(s) | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: PRINT_LOCATE Ven 8 Avr 2022 - 15:53 | |
| Bonjour Minibug, je ne comprends pas bien... pour moi le problème est que je demande à imprimer au point x,y, et que le point x-1 est concerné. Et même x-2 pour une taille de 8 (mais pas pour une taille de 10... et ça dépend aussi de la police)
Bonjour silverman, tu as probablement raison, mais le début d'impression ne devrait se faire qu'à partir du point demandé... Tu dessines un rectangle en x,y et tu écris en x+1,y+1, le rectangle est touché. | |
| | | silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: PRINT_LOCATE Ven 8 Avr 2022 - 18:08 | |
| En utilisant ce code: - Code:
-
DIM x PICTURE 1: WIDTH 1,500: height 1,1000: 2D_TARGET_IS 1: PRINT_TARGET_IS 1 top 0,300 x = 1: 2D_LINE x,0,x,100: FONT_SIZE 1,38 color 1,255,128,0 font_name 1,"arial black" PRINT_LOCATE x,5: PRINT "x" PRINT_LOCATE x,3*30: PRINT "w" PRINT_LOCATE x,3*60: PRINT "P" et la loupe des accessoires windows, je me suis aperçu que le décalage disparaissait, et les caractères étaient un peu différent(+ d'aliasing)! Je soupçonne un traitement de l'affichage par windows qui favoriserait ce décalage, et panoramic n'y serait pour rien. | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: PRINT_LOCATE Ven 8 Avr 2022 - 21:22 | |
| C'est probable, mail il faut en tenir compte... J'avais fait une espèce de grille avec des rectangles consécutifs, et c'est en écrivant dans les cases (en +1) que j'ai vu qu'on bouffait effaçait une paroi des rectangles... | |
| | | silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: PRINT_LOCATE Dim 10 Avr 2022 - 20:24 | |
| Il est possible de mesurer ce décalage et le principe est simple. Voici un code (perfectible): - Code:
-
DIM x dim Fontoffset dim size,fnam$,mytxt$
PICTURE 1: WIDTH 1,1000: height 1,1000 2D_TARGET_IS 1 : PRINT_TARGET_IS 1
x = 10: 2D_LINE x,0,x,500
size = 20 fnam$="arial" mytxt$="Ceci est un test" ' FONT_SIZE 1,size: font_name 1,fnam$ Font_offset(mytxt$,fnam$,size)
PRINT_LOCATE x + 1 + Fontoffset,10: PRINT mytxt$
END sub Font_offset(txt$,FontName$,FontSize) dim_local obj,oldNPT,i obj=8000 oldNPT=number_print_target if object_exists(obj)=0 create_hide PICTURE obj: WIDTH obj,1000: height obj,1000 create_show end_if ' PRINT_TARGET_IS obj font_name obj,FontName$ FONT_SIZE obj,FontSize font_color obj,255,255,255 ' color obj,255,128,0 PRINT_LOCATE 5,5: PRINT txt$ for i=0 to 10 if color_pixel_blue(obj,i,5)=255 Fontoffset = 5-i caption 0,"décalage = " + str$(Fontoffset) exit_for end_if next i ' PRINT_TARGET_IS oldNPT end_sub | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: PRINT_LOCATE Dim 10 Avr 2022 - 21:58 | |
| Bonsoir silverman, et merci pour ton code, ça peut m'être très utile et je me le garde sous le coude ! PS: Ma sub, très largement inspirée de la tienne ! - Code:
-
SUB Pr_ofs(tx$,fnt$,sz) ' Calcul de l'offset du décalage de la position d'affichage réelle de tx$ ' (fonction PRINT_LOCATE) en fonction de la police et de la taille ' Résultat en pixels dans ofs (défini dans l'appelant), à ajouter ' au x de PRINT_LOCATE (idée origine silverman) IF LABEL("ofs") = 9 THEN LABEL ofs DIM_LOCAL p,pt,p2,x p2 = NUMBER_2D_TARGET: pt = NUMBER_PRINT_TARGET p = 8000: PICTURE p: 2D_TARGET_IS p: PRINT_TARGET_IS p FONT_NAME p,fnt$: FONT_SIZE p,sz FOR x = 0 TO 4: 2D_LINE x,0,x,50: NEXT x PRINT_LOCATE 5,0: PRINT LEFT$(tx$,1) FOR x = 4 TO 0 STEP -1 IF COLOR_PIXEL_BLUE(p,x,0) = 0 THEN EXIT_FOR NEXT x ofs = 4-x 2D_TARGET_IS p2: PRINT_TARGET_IS pt: DELETE p END_SUB | |
| | | Contenu sponsorisé
| Sujet: Re: PRINT_LOCATE | |
| |
| | | | PRINT_LOCATE | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |