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 |
|
|
| Rotation de texte | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Rotation de texte Dim 9 Oct 2011 - 20:34 | |
| En application des nouvelles commandes TEXT_WIDTH et TEXT_HEIGHT, la possibilité d'afficher des textes en appliquant une rotation de 90, 180 ou 270 degrés: - Code:
-
DIM pf, t$, x%, y%, x1%, y1%, l%, h%, al%, i%, j%, r%, g%, b%, ob, fnt$, sz% LABEL Rotatext
PICTURE 1: WIDTH 1, 570: HEIGHT 1, 420 COLOR 1, 255,255,128 t$ = "AbCdEf": fnt$ = "Times New Roman": sz% = 30 ob = 1: ' objet destinataire x% = 10: y% = 20: al% = 0: GOSUB Rotatext: DISPLAY: ' affichage normal x% = 10: y% = 100: al% = 90: GOSUB Rotatext: DISPLAY x% = 80: y% = 100: al% = 180: GOSUB Rotatext: DISPLAY x% = 250: y% = 100: al% = 270: GOSUB Rotatext END
Rotatext: ' ob objet destinataire ' fnt$, sz% fonte et taille ' x%, y% coordonnées du coin supérieur gauche arrivée ' l%, h% dimensions du texte, en pixels ' al% angle de rotation, = 90, 180 ou 270 degrés IF al% = 0 PRINT_TARGET_IS ob FONT_NAME ob, fnt$: FONT_SIZE ob, sz%: FONT_BOLD ob PRINT_LOCATE x%, y%: PRINT t$ ELSE pf = NUMBER_OBJECTS+1 PICTURE pf: TOP pf, -200: WIDTH pf, 1000: HEIGHT pf, 100 PRINT_TARGET_IS pf FONT_NAME pf, fnt$: FONT_SIZE pf, sz%: FONT_BOLD pf l% = TEXT_WIDTH(t$,pf)+4: h% = TEXT_HEIGHT(t$,pf) PRINT t$ 2D_TARGET_IS ob FOR j% = 0 TO h%-1 FOR i% = 0 TO l%-1 r% = COLOR_PIXEL_RED(pf,i%,j%) g% = COLOR_PIXEL_GREEN(pf,i%,j%) b% = COLOR_PIXEL_BLUE(pf,i%,j%) 2D_PEN_COLOR r%,g%,b% SELECT al% CASE 90: 2D_POINT x%+j%,y%+l%-i% CASE 180: 2D_POINT x%+l%-i%,y%+h%-j% CASE 270: 2D_POINT x%+h%-j%,y%+i% END_SELECT NEXT i% NEXT j% PRINT_TARGET_IS 0: 2D_TARGET_IS 0 DELETE pf END_IF RETURN Mais pas encore la possibilité d'effectuer des rotations d'un angle quelconque, ça c'est une autre paire de manches ! Je suis parti du texte horizontal normal, mais celui-ci il faudrait évidemment l'afficher dans un picture caché avant de le recopier dans le sens désiré à l'aide du sous-programme. Edit: c'est fait C'est un peu long, puisque ça se fait par transfert pixel par pixel, et bien entendu plus la police est grande et plus c'est long. @cosmos comme tu peux le voir j'ai été obligé de rajouter 4 pixels à la largeur donnée par Text_Width pour récupérer tout le texte, et je ne sais toujours pas pourquoi...
Dernière édition par JL35 le Dim 9 Oct 2011 - 21:27, édité 3 fois | |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Rotation de texte Dim 9 Oct 2011 - 21:03 | |
| Bonsoir JL35 Tu trouvera ici dans le programme comment on peut calculer la rotation d'un sprite d'un angle quelconque. Mais ça laisse des trous dans le dessin. J'ai bien aisseyé d'autres méthodes mais elles toutes des trous mais un temps plus long de calcul. https://panoramic.1fr1.net/t1651-extracteur-de-sprites-ameliore - Code:
-
file_load picture01%,File_nom$ for i%=1 to Spr_X-1 for j%=1 to Spr_X-1 tbl_red(i%,j%)=Color_pixel_red(picture01%,x1+j%,y1+i%) tbl_green(i%,j%)=Color_pixel_Green(picture01%,x1+j%,y1+i%) tbl_blue(i%,j%)=Color_pixel_blue(picture01%,x1+j%,y1+i%) next J% next i% width picture02%, Spr_X height picture02%, Spr_Y Top picture02%,400 left picture02%,(300-spr_x)/2
' rotation=(2*3.1415926535897932*90)/360 ' 3.1415926535897932 rotation=val(text$(Angle_rot)) rotation= rotation*PI2/360 if checked(Check_MX)=1 Mir_X=-1 else Mir_X=1 end_if if checked(Check_MY)=1 Mir_Y=-1 else Mir_Y=1 end_if
xctr = Spr_X / 2 yctr = Spr_y / 2 Rotation_Sin=sin(rotation) Rotation_cos=cos(rotation)
color picture02%,0,0,0 2d_target_is picture02% image File_Num
for y=1 to Spr_Y
for x=1 to Spr_X 2d_pen_color tbl_red(y,x),tbl_green(y,x),tbl_blue(y,x)
' Nouveau point du sprite apres rotation
' m = int((x - xctr) * Rotation_cos - (y - yctr) * Rotation_Sin + xctr +.5 )*Mir_X ' n = int((x - xctr) * Rotation_Sin + (y - yctr) * Rotation_cos + yctr +.5 )*Mir_Y ' ********* voici la formule de la rotation d'image ********* m= (xctr+(x-xctr) * Rotation_cos +( Y-xctr)* Rotation_Sin)*Mir_X n= (xctr-(x-xctr) * Rotation_Sin + (Y-xctr)* Rotation_cos)*Mir_Y ' ***************************************************** Si ça peut te rendre service | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Rotation de texte Dim 9 Oct 2011 - 21:19 | |
| Merci minifly, je vais regarder ça, mais s'il y a des trous... ?
J'ai déjà modifié mon code pour faire quelque chose d'un peu plus universel. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Rotation de texte Dim 9 Oct 2011 - 22:40 | |
| Joli et bien fait Vivement que les librairies nous permettent de le réutiliser facilement | |
| | | Invité Invité
| Sujet: Re: Rotation de texte Dim 9 Oct 2011 - 22:47 | |
| Je ne sais pas. J'ai un vielle écran et une résolution de 1280 X 1024. Comme je sais que tu as une résolution très importante par rapport au mien, peut-être que le problème vient de là. Je ne peux rien dire de mieux. En ce domaine je suis nul. Mais je confirme que pour moi, les pixels supplémentaires n'ont pas de raison d'être. En tout cas il n'y a pas de chevauchement.
Si des fois tu as encore en ta possession un autre type d'écran, peut-être que tu peux vérifier.
En voyant l'image du haut, cela me rappel qu'avec GFA basic sur mon atari, pour pouvoir afficher du texte graphique avec des dessins, j'avais fait une fonte que je plaçais pixel par pixel, dans la direction que je souhaitais! Comme dirait quelqu'un d'autre: sniff sniff ! Que c'est vieux maintenant.
Je suis en train de penser que je suis sous XP SP3, et toi sous seven je crois. Je me souviens que tu as mis une image il y a quelque temps d'un texte grossi pour montrer le pourtour du texte, et que tu faisais le teste sur trois couleurs.
Apparemment le lissage du texte est différent entre un XP et SEVEN . |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Rotation de texte Dim 9 Oct 2011 - 23:17 | |
| ici une rotation de 30 degrés Pour la rotation d'images, j'ai mis mon propre algorithme, assez simple (j'ai eu la flemme d'étudier le tien minifly), il y a aussi des trous mais je pense que c'est inévitable si on ne fait pas quelque chose de beaucoup plus puissant, là c'est presque acceptable... Évidemment si c'est un multiple de 90 degrés, là c'est parfait. - Code:
-
DIM x,y,l,h,x1,y1,i%,j%,al,a,pi,r,g,b,xd,yd LABEL Rotopic
pi = 4*ATN(1)
PICTURE 1: WIDTH 1, 580: HEIGHT 1, 400 COLOR 1, 255,255,128: 2D_TARGET_IS 1 2D_FILL_COLOR 0,255,0 x = 10: y = 100: l = 50: h = 75 2D_RECTANGLE x,y,x+l-1,y+h-1 PRINT_TARGET_IS 1: FONT_NAME 1, "Arial": FONT_SIZE 1, 30: FONT_BOLD 1 PRINT_LOCATE x+10,y+15: PRINT "A": DISPLAY x1 = 120: y1 = 100: al = 30 GOSUB Rotopic
END
Rotopic: a = al*pi/180: ' angle de rotation, en radians FOR j% = 0 TO h yd = y1+j%*COS(a) FOR i% = 0 TO l r = COLOR_PIXEL_RED(1,x+i%,y+j%) g = COLOR_PIXEL_GREEN(1,x+i%,y+j%) b = COLOR_PIXEL_BLUE(1,x+i%,y+j%) 2D_PEN_COLOR r,g,b xd = x1+i%*COS(a) 2D_POINT xd+j%*SIN(a), yd-i%*SIN(a) NEXT i% DISPLAY NEXT j% RETURN d'ailleurs c'est marrant de voir la répartion des trous, c'est assez joli comme motif !: @cosmos, je ne vois pas bien pourquoi le problème viendrait de la résolution de l'écran, un pixel est un pixel sur tous les écrans... en tout cas j'en conclus que c'est chez moi qu'il y a une réaction anormale. Le Basic d'autrefois, c'était la galère pour l'affichage pixel par pixel, il ne fallait pas être pressé, et il valait mieux faire ça en assembleur. Maintenant à côté c'est le grand confort pour la rapidité. | |
| | | Invité Invité
| Sujet: Re: Rotation de texte Dim 9 Oct 2011 - 23:52 | |
| Le problème ne vient surement pas de la résolution, mais peut-être du lissage. Il doit-être plus détaillé avec seven. Peut-être, tu es meilleur juge que moi, vu que tu as un ordi que je n'ai pas. Ta mission, si tu l'acceptes, est de mettre un texte autour d'un cercle! Attention, ce message, peut-être s'auto-détruira dans cinq secondes! |
| | | Invité Invité
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 13:10 | |
| Je viens de faire une vérification. J'ai mis l'écran en noir pour mieux voir. J'ai rajouté 1 pixel, et effectivement il y a un problème entre le r et s, r et e, o et j. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 13:54 | |
| Bonjour cosmos et les autres, Ça me rassure si toi aussi tu constates de petites anomalies dans la longueur rendue, ce n'est pas dramatique et on peut s'en accommoder, c'est juste un peu étonnant. Le texte autour d'un cercle, ça ne doit pas être trop difficile, en partant de ce que j'ai fait plus haut, juste un peu de géométrie élémentaire, mais bon, comme je n'en vois pas trop l'utilité je décline ton invitation pour le moment Ce qui serait plus coton c'est l'alignement sur une courbe quelconque ! mais pas infaisable sans doute. | |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 18:47 | |
| J'ai pensé a utiliser Irfanview pour pivoter une image c'est quand même plus net. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 21:29 | |
| Effectivement, j'y avais pensé aussi, là le résultat est parfait, pas de trous. Mais à ma connaissance on ne peut pas faire de rotation à la demande (un angle donné) en ligne de commande, seulement 90 degrés à droite ou à gauche. Et même si on le fait directement sous IrfanView, l'image résultante n'est pas très utilisable: c'est un rectangle où les zones libérées par la rotation sont remplies en noir.
Alors ça ne répond pas à la demande, faire une rotation par programme en Panoramic. | |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 22:08 | |
| Dans la denière version on peut donner un angle quelconque | |
| | | Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 22:36 | |
| Hallo an Jicehel, Cosmos70, JL35, 659 minifly das ist ein extrem gute Diskusion. Ich habe ein sehr gutes Gefühl das wir um Ziel kommen. Jack könnte helfen, er hat die Befehle progrmmiert. Weiter so, es ist für mich sehr hilfreich, in meinem Programm ein wenig leben ein zu hauchen. Severin Hello Jicehel, Cosmos70, JL35, 659 minifly This is an extremely good Talkshow. I have a very good feeling we come to the target. Jack could help, he has progrmmiert the commands. Keep it up, it is very helpful to me in my program a little add life to live. Severin Bonjour Jicehel, Cosmos70, JL35, 659 minifly C'est une très bonne Talkshow. J'ai un très bon feeling nous arrivons à la cible. Jack pourrait aider, il a progrmmiert les commandes. Keep it up, il est très utile pour moi dans mon programme un peu plus ajouter de la vie à vivre. Severin | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 22:38 | |
| @minifly En ligne de commande, tu es sûr ? J'ai la dernière version (4.30) et je ne vois pas ça... en direct dans le programme, oui, depuis longtemps.
Bonsoir Severin | |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 23:19 | |
| Bonsoir severin oui dans le help lignes de cde | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 23:25 | |
| Il y a bien /rotate_r et /rotate_l pour 90° J'ai bien vu /jpg_rotate=(options) mais je ne vois pas du tout dans les options où on peut préciser un angle de rotation... | |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 23:29 | |
| je viens de regarder et dans le menu image il y a rotate_r rotate_l fine / rotation ou on peut donner n'importe quel angle de rotation et changer la couleur du fond | |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Rotation de texte Lun 10 Oct 2011 - 23:58 | |
| Tu as raison je ne vois pas la rotation dans ligne de commande | |
| | | jpcr
Nombre de messages : 276 Age : 57 Localisation : Val de Marne (94) Date d'inscription : 06/05/2011
| Sujet: Re: Rotation de texte Mar 11 Oct 2011 - 13:56 | |
| d’ailleurs ça manque aussi sérieusement dans les sprites : sprite_rotate 90 serait super pour changer de direction par exemple... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Rotation de texte Mar 11 Oct 2011 - 15:00 | |
| @minifly (et jpcr) si tu cherches un programme pour faire des rotations (entre mille autres choses) en ligne de commande: ImageMagick ( http://www.imagemagick.org/script/binary-releases.php fin de page pour les téléchargements). J'ai essayé, ça marche très bien, et très rapide. Et gratuit évidemment.
Dernière édition par JL35 le Mar 11 Oct 2011 - 15:06, édité 2 fois | |
| | | jpcr
Nombre de messages : 276 Age : 57 Localisation : Val de Marne (94) Date d'inscription : 06/05/2011
| Sujet: Re: Rotation de texte Mar 11 Oct 2011 - 15:04 | |
| merci a toi JL35 mais je voudrai des rotations dynamiques par programme. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Rotation de texte Mar 11 Oct 2011 - 15:07 | |
| pour toi, oui, c'est autre chose, là tu dépends de Jack ! | |
| | | Contenu sponsorisé
| Sujet: Re: Rotation de texte | |
| |
| | | | Rotation de texte | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |