Texte et CanvasGadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Texte et CanvasGadget

Message par Kwai chang caine »

Bonjour a tous,

Je sais que parmi vous y'a des fanas du graphisme
La 4.60 a amené l'arrivée du CanvasGadget
J'ai pas bien tout compris ce a quoi ça servait, a part que ça a l'air d'être mega fluide pour le graphisme et la 3D 8)

Alors une question m'est venue, depuis des siècles, je voulais reproduire un vieil écran de PC
Ouaaaah !!! le put... de projet de 3D de KCC 8O

C'est pas trop compliqué me direz vous ??
Ce a quoi je rétorquerai avec véhémence, que si, parce que j'aimerais que mes caractères grandissent ou rapetissent en proportion de la taille de la fenêtre que je resize a la souris :mrgreen:

Jusqu'a la 4.51 c'était quasi impossible, sauf avec des millions de calculs digne de notre mathématicien HuitBit donc indigne de moi :wink:

Alors ma question est....parce que je sent que déjà vous en avez marre d'attendre cette dernière, et voudriez passer à autre chose: sortir la poubelle, le chien et peut être même votre femme ?? :mrgreen:

Est ce que le CanvasGadget pourrait aider a faire cette fonction, ou alors j'lai encore planté dans le sable :oops:

Merci et bonne soirée
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Texte et CanvasGadget

Message par Ar-S »

je voulais reproduire un vieil écran de PC
J'ai pas vraiment pigé ce que tu voulais faire.. 8)
je ne pourrais de toute façon pas encore de conseiller ou te répondre car je ne me suis pas encore plongé dans les Canvas. (ce qui ne saurait tarder car ça me "curiosite" depuis pas mal de semaines..
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Texte et CanvasGadget

Message par Kwai chang caine »

Juste recreer un vieil ecran IBM 24 x 80 style TN3270 ou AS/400, mais resizable et que les caracteres suivent la fenetre

C'est pas grave peut etre "quinquin" saura ???

Merci
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Texte et CanvasGadget

Message par Backup »

..
Dernière modification par Backup le mar. 19/août/2014 10:41, modifié 1 fois.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Texte et CanvasGadget

Message par G-Rom »

Juste recreer un vieil ecran IBM 24 x 80 style TN3270 ou AS/400, mais resizable et que les caracteres suivent la fenetre

Un truc tout bête , tu créer un tableau ?

Code : Tout sélectionner

Dim IBM_SCREEN.i(24,80)
Chaque index du tableau comporte une couleur , tu dessines dans ton tableau de cette manière :

Code : Tout sélectionner

Procedure PutPixel(x,y,color)
 if (x > 0) and (x<=24) and (y > 0) and (y<=80)
  IBM_SCREEN(x,y) = color
 endif
endprocedure
Ensuite tu utilise le bon vieux stardrawing() pour dessiner ton écran virtuel sur ton canvas ;)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Texte et CanvasGadget

Message par Kwai chang caine »

Alors la les copains.....j'suis sur le cul 8O

J'avais posé cette question en étant sur de ne pas avoir de réponse, et en me disant qu'avec le CanvasGadget j'aurais peut être une chance ....
Oui je sais, je sais....c'est les GIF mon animation à moi...mais bon... :oops:

Et la non seulement j'obtiens un code de la mort tout fait....et en plus peut être la confirmation que cela se pourrait se faire aussi avec le CanvasGadget

Mais le plus fort, c'est que c'est deux morts vivants du forum, qui me sortent ça de leur tombe :lol:
Si je venais pas de me lever et qu'il fait jour, je crois que j'aurais les "chocotes"
J'ai l'impression d’être le regretté Michael dans le meilleur clip du monde
ImageImage

@DOBRO
Merci mille fois d’être sorti d'outre tombe pour me faire ce cadeau....faut qu'regarde mon calendrier...y'a p'tete deux noël en 2012 :roll:
etre patient et lire :
T'as raison, je passe ma vie sur ce forum.....j'suis sur que si tu cherches tu doit trouver des chaussettes et des slips à moi qui trainent un peu partout (Facile a différencier des vôtres..les miens ont trois couleurs, une pour devant une pour derrière, pour pas les remettre à l'envers) :oops:
Je lis, je suis tout ce qui se passe, j'en stocke des milliers, et ce super code.....j'l'ai pas vu 8O
Ca fait plusieurs années que j'aurais aimé l'avoir, pour simuler un écran IBM.
J'avais même créé un POST je crois la dessus. :roll:

Le problème etant le resizing des caractères.
Même IDLE m'avait proposé de le faire dans un de ses super codes d'editeurGadget...mais il a abandonné l'affaire en me disant que pour l'instant ce n’était pas sa priorité :(
Tiens ça me rappelle un mec, que j'aime bien aussi, à propos d'une histoire de priorité, de retour à la ligne, de GIF, mais j'sais plus qui ??? :roll:

Faut que je regarde, car j'ai l'impression que ton code ralenti ma machine...remarque c'est normal, peut être qu'il transforme vraiment mon PC en IBM de l’époque :lol:
Et puis les caractères sont un peu petits au démarrage, ce qui fait que quand on réduit la fenêtre ils sont minuscules, donc illisibles, mais j'ai l'impression que c'est exactement ce que je cherchais depuis 6 ans 8)
En tout cas sincèrement merci 8) 8)

@Cpl.Bator
J'en reviens pas aussi de te lire 8O
Ca me fait drôlement plaisir 8)
Merci pour la combine, donc d’après toi si je met ça dans un canvas il devrait de lui même resizer les caractères si on le resize lui ???
Car c'est ce qui est dur a faire :roll:

En tout cas merci beaucoup à toi aussi de renaitre de tes cendres pour venir me répondre.
Je savais que sur le FR, la programmation graphique n'avait pas de secret pour vous 8)

@Tous les deux
C'est dingue, j'ai l'impression de revenir y'a 6 ans quand j'ai posé ma première question sur ce forum, ce que je ne savais même pas faire, car je n'avais jamais utilisé ou presque de forum auparavant (Oui je sais, je sais..j'ai un peu trop bien compris et me suis trop rattrapé :?)
A cette époque 4 anges entre autres s’étaient penché sur mon berceau de bébé PB.
DOBRO, CPL.BATOR, FLYPE et BROSSDEN 8)
Et cela m'avait réchauffé le cœur de voir que en quelques minutes, y'avait toujours une personne que je connaissais ni "dave, ni des dents" qui se cassait la nenete pour me trouver une solution à moi qui depuis des années était toujours tout seul pour essayer de résoudre mes problèmes, et les dieux savent que j'en ai un nouveau par jour :oops:

Comme disait GEBONET, y'a peu sur le HS, on a coutume de dire : "C’était le bon temps !!!"
Et ben merci à vous deux de me l'avoir fait revivre quelques minutes 8)

J'vous préviens si BROSSDEN et FLYPE écrivent sur ce POST......
Je meurs !!!
Image

Encore merci pour tout, je vous souhaite une excellente journée, un super "Ouiquande" à vous 3 et à toute la famille PB bien sur 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Texte et CanvasGadget

Message par SPH »

Ha ce KCC, toujours en train de faire des tartines immangeables :roll: :wink:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Texte et CanvasGadget

Message par G-Rom »

Merci pour la combine, donc d’après toi si je met ça dans un canvas il devrait de lui même resizer les caractères si on le resize lui ???
Regarde le code :

Code : Tout sélectionner

; Ecran virtuel
Global Dim IBM_SCREEN.i(80,24) ; l'index 0,0 n'est pas utilisé dans l'exemple !


; Quelques procedure de dessin pour l'écran virtuel 

; Affichage d'un simple pixel 
Procedure PutPixel(x,y,color)
  If (x > 0) And (x<=80) And (y > 0) And (y<=24)
    IBM_SCREEN(x,y) = color
  EndIf
EndProcedure

; Effacement de l'écran virtuel
Procedure ClearVirtualScreen(color=$0)
  For y = 1 To 24
    For x = 1 To 80
      IBM_SCREEN(x,y) = 0
    Next
  Next 
EndProcedure

; On trace une ligne horizontale :
Procedure DrawHLine(y,color)
  For x = 1 To 80
    IBM_SCREEN(x,y) = color
  Next 
EndProcedure

; On trace une ligne horizontale en pointillié
Procedure DrawHLineDot(y,color)
  For x = 1 To 80 Step 2
    IBM_SCREEN(x,y) = color
  Next 
EndProcedure

;une petite Procedure de rendu sur n'importe quoi , une image , une fenetre , un gadget , , un screen , un canvas...
Procedure RenderVirtualScreen(Output, OutputWidth, OutputHeight)
  w = OutputWidth  / 80
  h = OutputHeight / 24
  
  StartDrawing(Output)
    For y = 1 To 24
      For x = 1 To 80
        Box((x-1)*w, (y-1)*h, w,h,IBM_SCREEN(x,y))         
      Next
    Next 
  StopDrawing()
EndProcedure


; Test

OpenWindow(0,0,0,640,480,"") ; fenetre de base
CanvasGadget(0,0,0,640,480)  ; la surface de rendu

ClearVirtualScreen() ; on efface l'écran virtuel
DrawHLine(1,$FFFFFF) ; on trace une ligne horizontale
DrawHLineDot(2,$FFFFFF) ; en pointillié
DrawHLine(3,$FFFFFF) ; une autre ligne
RenderVirtualScreen(CanvasOutput(0),GadgetWidth(0),GadgetHeight(0)) ; on dessine le resultat sur le canvas.


Repeat
  event = WindowEvent()  
  
Until event = #PB_Event_CloseWindow
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Texte et CanvasGadget

Message par Kwai chang caine »

Ha ce KCC, toujours en train de faire des tartines immangeables
C'est normal mon canard....ça se mange pas...ça se lit :mrgreen:

@GROM
Regarde le code :
Merci GRom de ce super code 8) 8)

Je l'ai copié/collé (Ce que je sais le mieux faire en programmation :oops:)
Au passage, j'ai vu IBM_SCREEN.i(80,24), alors mon plaisir était à son apogée :D
J'ai appuyé sur la petite roue crantée eeeeeeeet.........j'ai eu ça 8O
Image

Et j'ai beau clavioter partout, à coté de moi Ray charles c'est un lapin de trois semaine, et rien ne se passe :(
Nadine boudin, même lancer un super code.... j'suis pas capable.
:oops:

Bien trop souvent, je me dit que je ne vous mérite pas Booouuuuhhh !!!
Image
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Texte et CanvasGadget

Message par G-Rom »

Le code à bien réagit chez toi , pas de pb , c'est juste une base pour te montré comment dessiner dans un écran de 80x24 sur une surface de 640x480 , comment tracé des lignes , etc...
ensuite si le code n'est pas assez "animé" teste celui la :wink: :

Code : Tout sélectionner

; Ecran virtuel
Global Dim IBM_SCREEN.i(80,24) ; l'index 0,0 n'est pas utilisé dans l'exemple !


; Quelques procedure de dessin pour l'écran virtuel 

; Affichage d'un simple pixel 
Procedure PutPixel(x,y,color)
  If (x > 0) And (x<=80) And (y > 0) And (y<=24)
    IBM_SCREEN(x,y) = color
  EndIf
EndProcedure

; Effacement de l'écran virtuel
Procedure ClearVirtualScreen(color=$0)
  For y = 1 To 24
    For x = 1 To 80
      IBM_SCREEN(x,y) = 0
    Next
  Next 
EndProcedure

; On trace une ligne horizontale :
Procedure DrawHLine(y,color)
  If y <= 24
    For x = 1 To 80
      IBM_SCREEN(x,y) = color
    Next 
  EndIf 
EndProcedure

; On trace une ligne horizontale en pointillié
Procedure DrawHLineDot(y,color)
  If y <= 24
    For x = 1 To 80 Step 2
      IBM_SCREEN(x,y) = color
    Next 
  EndIf 
EndProcedure

;une petite Procedure de rendu sur n'importe quoi , une image , une fenetre , un gadget , , un screen , un canvas...
Procedure RenderVirtualScreen(Output, OutputWidth, OutputHeight)
  w = OutputWidth  / 80
  h = OutputHeight / 24
  
  StartDrawing(Output)
    For y = 1 To 24
      For x = 1 To 80
        Box((x-1)*w, (y-1)*h, w,h,IBM_SCREEN(x,y))         
      Next
    Next 
  StopDrawing()
EndProcedure


; Test

OpenWindow(0,0,0,640,480,"") ; fenetre de base
CanvasGadget(0,0,0,640,480)  ; la surface de rendu

ClearVirtualScreen() ; on efface l'écran virtuel
DrawHLine(1,$FFFFFF) ; on trace une ligne horizontale
DrawHLineDot(2,$FFFFFF) ; en pointillié
DrawHLine(3,$FFFFFF) ; une autre ligne
RenderVirtualScreen(CanvasOutput(0),GadgetWidth(0),GadgetHeight(0)) ; on dessine le resultat sur le canvas.


Repeat
  event = WindowEvent()  
  If MyTimer < ElapsedMilliseconds()
    MyTimer = ElapsedMilliseconds() + 250
    ClearVirtualScreen() ; on efface l'écran virtuel
    DrawHLine(1+yy,$FFFFFF) ; on trace une ligne horizontale
    DrawHLineDot(2+yy,$FFFFFF) ; en pointillié
    DrawHLine(3+yy,$FFFFFF) ; une autre ligne
    RenderVirtualScreen(CanvasOutput(0),GadgetWidth(0),GadgetHeight(0)) ; on dessine le resultat sur le canvas.
    yy+1
    yy%24
  EndIf 
Until event = #PB_Event_CloseWindow
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Texte et CanvasGadget

Message par Backup »

....
Dernière modification par Backup le mar. 19/août/2014 10:42, modifié 1 fois.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Texte et CanvasGadget

Message par Kwai chang caine »

J'ai de plus en plus honte.... :oops: y'a pas un tapis par la :oops:
Et les caractères, comment on les ecrit, on peut pas au clavier ??? :(
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Texte et CanvasGadget

Message par G-Rom »

je suis dessus, mais 80x24 , t'attend pas à des miracles...
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Texte et CanvasGadget

Message par Kwai chang caine »

Merci beaucoup GRom, je t'aime 8)

J'avais commencé à bousiller ton code, mais ça marche pas...faut pas changer les mauvaises habitudes :mrgreen:

Code : Tout sélectionner

OpenWindow(0,0,0,640,480,"", #PB_Window_SizeGadget) ; fenetre de base
+
+
+
+
+
+

Repeat
 event = WindowEvent()
 
 If Event = #PB_Event_SizeWindow
  ResizeGadget(CanvasGadget, #PB_Ignore, #PB_Ignore, WindowWidth(0), WindowHeight(0))
  RedrawWindow_(WindowID(0), 0, 0, #RDW_INVALIDATE|#RDW_UPDATENOW)
 EndIf 

Until event = #PB_Event_CloseWindow
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Texte et CanvasGadget

Message par Kwai chang caine »

je suis dessus, mais 80x24 , t'attend pas à des miracles...
Tiens c'est bizarre ??? 8O
Je pensais au contraire que de demander "juste" une résolution de gros carrés de 80x24 ça serait beaucoup plus simple que de deplacer une boule ou un super objet plein d'angles et d'ombre, ce que je vous vois faire en 3D avec une qualité à faire pâlir un laser :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre