FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Dessin sur A4 - Page 2 Emptypar Pedro Hier à 15:50

» Un autre pense-bête...
Dessin sur A4 - Page 2 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Dessin sur A4 - Page 2 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Dessin sur A4 - Page 2 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Dessin sur A4 - Page 2 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Dessin sur A4 - Page 2 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Dessin sur A4 - Page 2 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Dessin sur A4 - Page 2 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Dessin sur A4 - Page 2 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Dessin sur A4 - Page 2 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Dessin sur A4 - Page 2 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Dessin sur A4 - Page 2 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Dessin sur A4 - Page 2 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Dessin sur A4 - Page 2 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Dessin sur A4 - Page 2 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-25%
Le deal à ne pas rater :
PC Portable Gamer 16,1” HP Victus 16 – 16 Go /512 Go
749.99 € 999.99 €
Voir le deal

 

 Dessin sur A4

Aller en bas 
5 participants
Aller à la page : Précédent  1, 2
AuteurMessage
JL35




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

Dessin sur A4 - Page 2 Empty
MessageSujet: Re: Dessin sur A4   Dessin sur A4 - Page 2 EmptyMer 22 Jan 2014 - 22:38

Merci ygeronimi pour tes encouragements du... 3 mai 2013 !

J'ai mis le temps pour me réveiller (comme la belle au bois dormant  Very Happy ), et j'ai fait une nouvelle version, très semblable à la précédente, toujours pour dessiner sur une page au format A4, en y ajoutant la possibilité de déplacer pixel par pixel un objet qu'on vient de dessiner, ou d'importer, pour le positionner avec précision dans la page.
Je précise bien que cette opération n'est possible que sur le dernier objet dessiné.
On peut aussi afficher une grille ponctuellement, pour aider le repérage.

La taille de la fenêtre affichée est modulable, en modifiant le paramètre fact (pixels par mm sur la page). Pour avoir une image de page grandeur nature il faut une valeur de 3.7, ce qui correspond à un écran d'au moins 1200 pixels. Pour un écran de 1024 pixels, plus courant, il faut descendre aux environs de 3.1
Bien entendu, plus c'est grand, meilleure est la précision du dessin.

Pour ceux que ça intéresse, il suffit de lire l'Aide' du menu, tout y est.
Ressource externe nécessaire: KGF.dll de l'ami Klaus (traitement d'images et impression).

Utilisation: n'importe quelle page A4 de présentation, confection de cartes, menus, avec pliage, etc.
Attention, ce n'est pas du dessin vectoriel, les objets dessinés ne sont pas déplaçables (sauf immédiatement après dessin), ni redimensionnables, ils sont partie indissociable du tout.
Code:
' Dessin.bas
LABEL timeur, Ligne, Rectplein, Rectvide, Cercplein, Cercvide, Libre, Remplir
LABEL Texte, Images, Coultrac, Coulfond, New, Opn, Secours, Carte, Enr, Ens, Impr, Impr1
LABEL Quit, Anul, Hlp, Dtxt, Dimg, chimg, chimg1, vfont, Red1, Red2, Red3, Red4, Reda
LABEL Txtf, Imagfi, Imgf, Init, Chor, Razor, Timon, Timoff, Track, Trackp
LABEL Trait_e, Trait_t, Applic
LABEL Copyzon, Pastzon, Dimtext, Desfig, Deplace, Grille, Inipara, Rotimage

DIM w0%, h0%, wp%, hp%, mg, lb, hb, i%, j%, c, cr, cg, cb, tr, tg, tb, lc, hc, fact
DIM x,y,x1,y1,x2,y2,x3,y3,xa,ya,truc,f$,fm$,fp$, fig, a, r, pi, pas, kg$, m$, rps$
DIM pic, o1, o2, o3, oct, ocf, nti%, ra, wn, hn, pr%, pg%, pb%, yt%, wip%, hip%
DIM na, nva, img(10), a$, b$, wi%, hi%, font$, fsz%, txt$, lc%, hc%, hnd%, cnv%
DIM orien%, igtr%, igrz%, igcp%, w%, h%, ctt%, grid%, ma%, fsv$, dep%, modi%
DIM sx1, sx2, sy1, sy2, ga%, lu%, co%, picm%, fsc$, cz%, tpt%, wtt%
DATA 0,0,0,0,0,128,0,128,0,0,128,128,128,0,0,128,0,128,128,64,0,192,192,192
DATA 128,128,128,0,0,255,0,255,0,0,255,255,255,0,0,255,0,255,255,255,0,255,255,255
' ====================== CHEMINS A AJUSTER =====================================
kg$ = "C:\PANORAMIC\KLAUS\DLLs\KGF.dll": ' DLL Klaus, à ajuster <=+=+=+=+=+=+=+=
' rps$ = "Z:\": ' répertoire de manoeuvre (fichiers temporaires) <=+=+=+=+=+=+=+=+
rps$ = "C:\Temp\": ' répertoire de manoeuvre (fichiers temporaires) <=+=+=+=+=+=
' ==============================================================================
fp$ = rps$ + "Imgprn.bmp": ' fichier d'impression
fsv$ = rps$ + "Savpic.bmp"
fsc$ = rps$ + "Secours.bmp": ' sauvegarde de secours
' ==============================================================================
' Paramètre fact à moduler par tâtonnements, en fonction de la définition verticale
' de l'écran, plus elle est faible, plus il faut le réduire.
' 3.7 correspond à une image A4 grandeur nature, sur un écran de 1200 pixels verticaux
' (une valeur de 3.1 devrait convenir à un écran de 1024 pixels, à ajuster).
fact = 3.7: ' pixels par mm, à l'écran (écran de 1920x1200)
' ==============================================================================
pi = 4*ATN(1)
orien% = 0: ' orientation 'portrait'
tr = 0: tg = 0: tb = 0: ' couleur initiale de tracé (noir)
cr = 0: cg = 0: cb = 0: ' couleur initiale de fond (blanc)
f$ = ""
na = 1: nva = 5: ' profondeur d'annulations
mg = 100: ' marge gauche (zone des commandes)
COLOR 0, 128,255,255: BORDER_SMALL 0: ON_CLOSE 0,Quit
' ------------------------------------------------------------------------------
pic = 160: PICTURE pic: TOP pic, 5: LEFT pic, mg: ' image de la feuille A4
' ------------------------------------------------------------------------------
igtr% = 138: IMAGE igtr%: ' tampon pour transfert des images
igrz% = 139: IMAGE igrz%: ' page initiale, pour RAZ
igcp% = 490: IMAGE igcp%: ' pour copie de zone

GOSUB Init
MAIN_MENU 1
SUB_MENU 2: PARENT 2, 1: CAPTION 2, "Fichier"
  SUB_MENU 21: PARENT 21, 2: CAPTION 21, "Nouveau"
  SUB_MENU 22: PARENT 22, 2: CAPTION 22, "Ouvrir un fichier"
  SUB_MENU 27: PARENT 27, 2: CAPTION 27, "Ouvrir la sauvegarde"
  SUB_MENU 23: PARENT 23, 2: CAPTION 23, "Enregistrer"
  SUB_MENU 24: PARENT 24, 2: CAPTION 24, "Enregistrer sous..."
  SUB_MENU 25: PARENT 25, 2: CAPTION 25, "Imprimer"
  SUB_MENU 26: PARENT 26, 2: CAPTION 26, "Quitter"
  ON_CLICK 21, New: ON_CLICK 22, Opn: ON_CLICK 27, Secours
  ON_CLICK 23, Enr: ON_CLICK 24, Ens: ON_CLICK 25, Impr: ON_CLICK 26, Quit
SUB_MENU 3: PARENT 3, 1: CAPTION 3, "Edition"
  SUB_MENU 31: PARENT 31, 3: CAPTION 31, "Annuler dernier"
  SUB_MENU 32: PARENT 32, 3: CAPTION 32, "RAZ tout"
  SUB_MENU 33: PARENT 33, 3: CAPTION 33,"Tracer les axes H et V"
  ON_CLICK 31, Anul: ON_CLICK 32, Razor: ON_CLICK 33,Carte
SUB_MENU 4: PARENT 4, 1: CAPTION 4, "Aide": ON_CLICK 4, Hlp

PICTURE 8: TOP 8,4: LEFT 8,4: WIDTH 8,15: HEIGHT 8,10
PICTURE 9: TOP 9,14: LEFT 9,4: WIDTH 9,15: HEIGHT 9,10: ' témoin d'activité du Timer
' ------------------------------------------------------------------------------
CONTAINER_OPTION 10: TOP 10,30: LEFT 10,5: HEIGHT 10,50: WIDTH 10,mg-10
COLOR 10,255,255,180: CAPTION 10,"Orientation :"
  OPTION 11: PARENT 11,10: TOP 11,15: LEFT 11,10: CAPTION 11,"Portrait"
  OPTION 12: PARENT 12,10: TOP 12,30: LEFT 12,10: CAPTION 12,"Paysage"
  MARK_ON 11: ON_CLICK 11, Chor: ON_CLICK 12, Chor
' ------------------------------------------------------------------------------
ALPHA 49: LEFT 49,30: CAPTION 49,"Marges non"+chr$(10)+"imprimables -->"
o1 = 50: lb = mg-10: hb = 25
CONTAINER_OPTION o1: TOP o1,TOP(10)+55: LEFT o1,2: HEIGHT o1,210: WIDTH o1,mg-5: CAPTION o1,"Type d'objet"
COLOR o1,255,255,180
  OPTION o1+1: PARENT o1+1,o1: TOP o1+1,15: LEFT o1+1,5: WIDTH o1+1,mg-20: CAPTION o1+1,"Ligne"
  OPTION o1+2: PARENT o1+2,o1: TOP o1+2,31: LEFT o1+2,5: WIDTH o1+2,mg-20: CAPTION o1+2,"Rect. vide"
  OPTION o1+3: PARENT o1+3,o1: TOP o1+3,47: LEFT o1+3,5: WIDTH o1+3,mg-20: CAPTION o1+3,"Rect. plein"
  OPTION o1+4: PARENT o1+4,o1: TOP o1+4,63: LEFT o1+4,5: WIDTH o1+4,mg-20: CAPTION o1+4,"Cercle vide"
  OPTION o1+5: PARENT o1+5,o1: TOP o1+5,79: LEFT o1+5,5: WIDTH o1+5,mg-20: CAPTION o1+5,"Cercle plein"
  OPTION o1+6: PARENT o1+6,o1: TOP o1+6,95: LEFT o1+6,5: WIDTH o1+6,mg-20: CAPTION o1+6,"Remplir"
  OPTION o1+7: PARENT o1+7,o1: TOP o1+7,111: LEFT o1+7,5: WIDTH o1+7,mg-20: CAPTION o1+7,"Tracé libre"
  OPTION o1+8: PARENT o1+8,o1: TOP o1+8,127: LEFT o1+8,5: WIDTH o1+8,mg-20: CAPTION o1+8,"Texte"
  OPTION o1+9: PARENT o1+9,o1: TOP o1+9,143: LEFT o1+9,5: WIDTH o1+9,mg-20: CAPTION o1+9,"Image"
  OPTION o1+10: PARENT o1+10,o1: TOP o1+10,165: LEFT o1+10,5: WIDTH o1+10,mg-20: CAPTION o1+10,"Copier zone"
  OPTION o1+11: PARENT o1+11,o1: TOP o1+11,183: LEFT o1+11,5: WIDTH o1+11,mg-20: CAPTION o1+11,"Coller zone"
  ON_CLICK o1+8, Dtxt: ON_CLICK o1+9, Dimg
  MARK_ON o1+1: fig = 1: ' Ligne
' ------------------------------------------------------------------------------
o2 = 70
CONTAINER o2: TOP o2,TOP(o1)+215: LEFT o2,LEFT(o1): HEIGHT o2,75: WIDTH o2,mg-5: CAPTION o2,"Largeur du tracé"
COLOR o2,255,255,180
  SPIN o2+1: PARENT o2+1,o2: TOP o2+1,15: LEFT o2+1,10: WIDTH o2+1,45
  MIN o2+1,1: MAX o2+1,20: POSITION o2+1,1: ON_CHANGE o2+1,Trait_e
  ALPHA o2+2: PARENT o2+2,o2: TOP o2+2,17: LEFT o2+2,60: CAPTION o2+2,"pixels"
  o3 = o2+3
  PICTURE o3: PARENT o3,o2: TOP o3,40: LEFT o3,5: WIDTH o3,WIDTH(o2)-10: HEIGHT o3,30
  2D_TARGET_IS o3: 2D_PEN_COLOR 0,0,0: 2D_PEN_SOLID: 2D_LINE 15,5,80,5
  2D_PEN_DASH: 2D_LINE 15,15,80,15
  2D_PEN_DOT: 2D_LINE 15,25,80,25
  2D_PEN_SOLID: 2D_PEN_COLOR 255,0,0: 2D_PEN_WIDTH 7: 2D_LINE 0,5,8,5: tpt% = 0: ' type trait (solide)
  ON_CLICK o3,Trait_t
' ------------------------------------------------------------------------------
oct = 81: x1 = 5: y1 = TOP(o2)+HEIGHT(o2)+20: lc = 30: hc = 15
ALPHA oct-1: TOP oct-1,y1-16: LEFT oct-1,2
COLOR oct-1, 255,255,180: CAPTION oct-1,"Couleur du tracé "
PICTURE oct: TOP oct, y1: LEFT oct, x1: WIDTH oct, lc*2: HEIGHT oct, hc*8
2D_TARGET_IS oct
FOR j% = 0 TO 7
    FOR i% = 0 TO 1
        READ cr: READ cg: READ cb: 2D_FILL_COLOR cr,cg,cb
        2D_RECTANGLE i%*lc,j%*hc,i%*lc+lc,j%*hc+hc
    NEXT i%
NEXT j%
ON_CLICK oct, Coultrac
PICTURE oct+1: TOP oct+1, y1: LEFT oct+1, 10+2*lc: WIDTH oct+1, 25: HEIGHT oct+1, 8*hc
COLOR oct+1, 0,0,0
' ------------------------------------------------------------------------------
ocf = 85: x1 = 5: y1 = y1+8*hc+35
ALPHA ocf-1: TOP ocf-1, y1-30: LEFT ocf-1, 2
COLOR ocf-1,255,255,180: CAPTION ocf-1,"Couleur de "+CHR$(10)+"remplissage "
PICTURE ocf: TOP ocf, y1: LEFT ocf, x1: WIDTH ocf, lc*2: HEIGHT ocf, hc*8
2D_TARGET_IS ocf
RESTORE
FOR j% = 0 TO 7
    FOR i% = 0 TO 1
        READ cr: READ cg: READ cb: 2D_FILL_COLOR cr,cg,cb
        2D_RECTANGLE i%*lc,j%*hc,i%*lc+lc,j%*hc+hc
    NEXT i%
NEXT j%
ON_CLICK ocf, Coulfond
PICTURE ocf+1: TOP ocf+1,y1: LEFT ocf+1,LEFT(oct+1): WIDTH ocf+1,25: HEIGHT ocf+1,8*hc
2D_TARGET_IS ocf+1: 2D_PEN_COLOR 0,0,0: ' 2D_RECTANGLE 0,0,lc,lc-15

CHECK ocf+2: TOP ocf+2,TOP(ocf)+HEIGHT(ocf)+5: LEFT ocf+2,30: WIDTH ocf+2,50
CAPTION ocf+2,"Grille": grid% = 0: ON_CLICK ocf+2,Grille

CONTAINER 400: TOP 400,TOP(ocf+2)+30: LEFT 400,3: WIDTH 400,mg-8: HEIGHT 400,65
COLOR 400,255,255,180
ALPHA 401: PARENT 401,400: TOP 401,2: LEFT 401,2
CAPTION 401,"Déplacement de "+CHR$(10)+"1 pixel :"
BUTTON 402: PARENT 402,400: TOP 402,TOP(401)+15: LEFT 402,45: WIDTH 402,22: HEIGHT 402,22
BUTTON 403: PARENT 403,400: TOP 403,TOP(402)+24: LEFT 403,LEFT(402):WIDTH 403,22: HEIGHT 403,22
BUTTON 404: PARENT 404,400: TOP 404,TOP(402)+11: LEFT 404,LEFT(402)-22: WIDTH 404,22: HEIGHT 404,22
BUTTON 405: PARENT 405,400: TOP 405,TOP(404): LEFT 405,LEFT(402)+22: WIDTH 405,22: HEIGHT 405,22
FOR i% = 402 TO 405: FONT_NAME i%,"Wingdings": ON_CLICK i%,Deplace: NEXT i%
CAPTION 402,CHR$(233): CAPTION 403,CHR$(234): CAPTION 404,CHR$(231): CAPTION 405,CHR$(232)

picm% = 495: PICTURE picm%: HIDE picm%: ' picture de manoeuvre
' ------------------------------------------------------------------------------
OPEN_DIALOG 90
FILTER 90,"Images *.bmp *.jpg *.gif *.ico|*.bmp;*.jpg;*.gif;*.ico"
SAVE_DIALOG 91
FILTER 91,"Image *.bmp|*.bmp"
' ------------------------------------------------------------------------------
FOR i% = 1 TO 5: IMAGE 140+i%: img(i%) = 140+i%: NEXT i% : ' Pour sauvegardes

' =============== FORM TEXTES ==================================================
FORM 96: TOP 96, 60: LEFT 96, 110: HEIGHT 96, 380: WIDTH 96, 680: HIDE 96
BORDER_SMALL 96: COLOR 96,255,180,180: CAPTION 96, "Police/Taille"
TO_FOREGROUND 96
font_bold 96
  LIST 97: PARENT 97, 96: TOP 97, 5: HEIGHT 97, 95: WIDTH 97, 150
  FONT_NAMES_LOAD 97
  FOR i% = COUNT(97) TO 1 STEP -1
      IF LEFT$(ITEM_READ$(97, i%), 1) = "@" THEN ITEM_DELETE 97, i%
  NEXT i%
  ON_CLICK 97, vfont
  SPIN 98: PARENT 98, 96: TOP 98, 5: LEFT 98, 160: WIDTH 98, 50: MAX 98, 30
  POSITION 98, 10: MIN 98, 6: MAX 98, 120: ON_CHANGE 98, vfont
  BUTTON 99: PARENT 99, 96: TOP 99, 5: LEFT 99, WIDTH(96)-100: WIDTH 99, 80
  CAPTION 99, "OK": ON_CLICK 99, Texte: ON_CLOSE 96, Txtf
  EDIT 100: PARENT 100, 96: TOP 100,TOP(98): LEFT 100,LEFT(98)+60: WIDTH 100, 240
  FONT_NAME 100, "Arial": FONT_SIZE 100, 10: font$ = "Arial": TEXT 100, font$
  ALPHA 101: PARENT 101, 96: TOP 101, TOP(97)+HEIGHT(97)-12: LEFT 101,340
  CAPTION 101, " Saisir ou 'coller' le texte :"
  MEMO 102: PARENT 102,96: TOP 102,TOP(101)+16: WIDTH 102,WIDTH(96)-16: HEIGHT 102,190
  CHECK 103: PARENT 103,96: TOP 103,38: LEFT 103,160: WIDTH 103,80: CAPTION 103,"Gras"
  CHECK 104: PARENT 104,96: TOP 104,38: LEFT 104,210: WIDTH 104,80: CAPTION 104,"Italique"
  CHECK 105: PARENT 105,96: TOP 105,38: LEFT 105,270: WIDTH 105,80: CAPTION 105,"Souligné"
  FOR i% = 103 TO 105: ON_CLICK i%,vfont: NEXT i%
  PICTURE 106: TOP 106,-1000: WIDTH 106,w0%-20: HEIGHT 106,900: ' pour calcul taille texte
  CHECK 288: PARENT 288,96: TOP 288,38: LEFT 288,360: CAPTION 288,"Centré"
  CHECK 280: PARENT 280,96: TOP 280,60: LEFT 280,160: CAPTION 280,"Rotation 90°"
  CONTAINER_OPTION 281: PARENT 281,96: HEIGHT 281,30: TOP 281,53: LEFT 281,250
  WIDTH 281,130: COLOR 281,255,200,200
  OPTION 282: PARENT 282,281: TOP 282,7: LEFT 282,5: CAPTION 282,"Gauche"
  OPTION 283: PARENT 283,281: TOP 283,7: LEFT 283,70: CAPTION 283,"Droite"
  MARK_ON 282
  CHECK 107: PARENT 107,96: TOP 107,80: LEFT 107,160: WIDTH 107,150
  CAPTION 107,"Fond transparent"
  ' MARK_ON 107
  BUTTON 108: PARENT 108,96: TOP 108,35: LEFT 108,420
  CAPTION 108,"Appliquer": ON_CLICK 108,Applic
  ALPHA 110: PARENT 110,96: TOP 110,TOP(102)+HEIGHT(102)+32: WIDTH 110,240
  a$ = " Après saisie, clic le bouton 'OK', puis clic l'emplacement"
  a$ = a$ + " (haut/gauche) sur la feuille (patience, ça peut être long !)"
  CAPTION 110,a$
  BUTTON 290: PARENT 290,96: TOP 290,TOP(102)+HEIGHT(102)+5: LEFT 290,150: WIDTH 290,120
  CAPTION 290,"Dimensions texte:": ON_CLICK 290,Dimtext
  ALPHA 291: PARENT 291,96: TOP 291,TOP(290)+5: LEFT 291,LEFT(290)+162
  CAPTION 291,"X        pixels =        X          mm"
  EDIT 292: PARENT 292,96: TOP 292,TOP(290)+1: WIDTH 292,35: LEFT 292,LEFT(290)+123
  EDIT 293: PARENT 293,96: TOP 293,TOP(292): WIDTH 293,35: LEFT 293,LEFT(290)+172
  EDIT 294: PARENT 294,96: TOP 294,TOP(292): WIDTH 294,35: LEFT 294,LEFT(290)+248
  EDIT 295: PARENT 295,96: TOP 295,TOP(292): WIDTH 295,35: LEFT 295,LEFT(290)+297
  PICTURE 296: HIDE 296
  BUTTON 111: PARENT 111,96: TOP 111,60: LEFT 111,LEFT(99): WIDTH 111,80
  CAPTION 111,"Annuler": ON_CLICK 111, Txtf

' =============== FORM IMAGES ==================================================
FORM 115: TOP 115, 60: LEFT 115, 50: HEIGHT 115, 430: WIDTH 115, 360: HIDE 115
BORDER_SMALL 115: COLOR 115,255,180,180: CAPTION 115, "Image à insérer:"
FONT_BOLD 115
  EDIT 116: PARENT 116,115: TOP 116,5: WIDTH 116,WIDTH(115)-16
  TEXT 116," * clic pour choisir l'image *": ON_CLICK 116, chimg
  ALPHA 117: PARENT 117,115: TOP 117,30
  ALPHA 118: PARENT 118,115: TOP 118,52
  CAPTION 118, "Redimensionner: W=                H=                pixels"
  SPIN 119: PARENT 119,115: TOP 119,50: LEFT 119,120: WIDTH 119,55
  SPIN 120: PARENT 120,115: TOP 120,TOP(119): LEFT 120,200: WIDTH 120,55
  ALPHA 121: PARENT 121,115: TOP 121,77: LEFT 121,260: CAPTION 121,"mm"
  SPIN 122: PARENT 122,115: TOP 122,75: LEFT 122,120: WIDTH 122,55
  SPIN 123: PARENT 123,115: TOP 123,TOP(121): LEFT 123,200: WIDTH 123,55
  MIN 119,0: MAX 119,5000: MIN 120,0: MAX 120,5000
  MIN 122,0: MAX 122,1500: MIN 123,0: MAX 123,1500
  ON_CHANGE 119,Red1: ON_CHANGE 120,Red2: ON_CHANGE 122,Red3: ON_CHANGE 123,Red4

  ALPHA 125: PARENT 125,115: TOP 125,90: LEFT 125,5: CAPTION 125,"Correction :"
  ALPHA 129: PARENT 129,115: TOP 129,TOP(125)+18: LEFT 129,5: CAPTION 129,"Gamma:"
  TRACK_BAR 130: PARENT 130,115: TOP 130,TOP(129): LEFT 130,65: WIDTH 130,WIDTH(115)-120
  HEIGHT 130,18: ON_CHANGE 130, Track
  MIN 130,-128: MAX 130,127: POSITION 130,0
  EDIT 131: PARENT 131,115: TOP 131,TOP(130): LEFT 131,LEFT(130)+WIDTH(130): WIDTH 131,35
  TEXT 131, STR$(POSITION(130))
  ALPHA 132: PARENT 132,115: TOP 132,TOP(129)+20: LEFT 132,5: CAPTION 132,"Luminosité:"
  TRACK_BAR 133: PARENT 133,115: TOP 133,TOP(132): LEFT 133,65: WIDTH 133,WIDTH(115)-120
  HEIGHT 133,18: ON_CHANGE 133, Track
  MIN 133,-128: MAX 133,127: POSITION 133,0
  EDIT 134: PARENT 134,115: TOP 134,TOP(133): LEFT 134,LEFT(133)+WIDTH(133): WIDTH 134,35
  TEXT 134, STR$(POSITION(133))
  ALPHA 135: PARENT 135,115: TOP 135,TOP(132)+20: LEFT 135,5: CAPTION 135,"Contraste:"
  TRACK_BAR 136: PARENT 136,115: TOP 136,TOP(135): LEFT 136,65: WIDTH 136,WIDTH(115)-120
  HEIGHT 136,18: ON_CHANGE 136, Track
  MIN 136,-128: MAX 136,127: POSITION 136,0
  EDIT 137: PARENT 137,115: TOP 137,TOP(136): LEFT 137,LEFT(136)+WIDTH(136): WIDTH 137,35
  TEXT 137, STR$(POSITION(136))
 
  CHECK 140: PARENT 140,115: TOP 140,TOP(135)+30: LEFT 140,10: CAPTION 140,"Rotation 90°"
  ON_CLICK 140,Rotimage
  CONTAINER_OPTION 441: PARENT 441,115: HEIGHT 441,30: TOP 441,TOP(140)-7
  LEFT 441,LEFT(140)+90: WIDTH 441,130: COLOR 441,255,200,200
  OPTION 442: PARENT 442,441: TOP 442,7: LEFT 442,5: CAPTION 442,"Gauche"
  OPTION 443: PARENT 443,441: TOP 443,7: LEFT 443,70: CAPTION 443,"Droite"
  MARK_ON 442
 
  PICTURE 150: PARENT 150,115: TOP 150,210: LEFT 150,10: WIDTH 150,240: HEIGHT 150,180
  STRETCH_ON 150

  BUTTON 124: PARENT 124,115: TOP 124,200: LEFT 124,265: CAPTION 124,"OK"
  ON_CLICK 124, Images: ON_CLOSE 115, Imgf
  BUTTON 151: PARENT 151,115: TOP 151,230: LEFT 151,LEFT(124): CAPTION 151,"Annuler"
  ON_CLICK 151, Imgf
' =============== FORM IMPRESSION ==============================================
FORM 300: TOP 300,100: LEFT 300,200: HEIGHT 300,150: WIDTH 300,360: HIDE 300
COLOR 300,180,255,180: CAPTION 300, "  - IMPRESSION -": BORDER_SMALL 300
FONT_BOLD 300
  ALPHA 301: PARENT 301,300: TOP 301,20: LEFT 301,5
  CAPTION 301,"Correction gamma éventuelle :"
  EDIT 302: PARENT 302,300: TOP 302,20: LEFT 302,180: WIDTH 302,40
  TRACK_BAR 303: PARENT 303,300: TOP 303,40: LEFT 303,5: WIDTH 303,WIDTH(300)-25
  HEIGHT 303,20: ON_CHANGE 303, Trackp
  MIN 303,-128: MAX 303,127: POSITION 303,0
  TEXT 302, STR$(POSITION(303))
  BUTTON 310: PARENT 310,300: TOP 310,80: LEFT 310,100: CAPTION 310,"Imprimer"
  BUTTON 311: PARENT 311,300: TOP 311,TOP(310): LEFT 311,180: CAPTION 311,"Annuler"
  ON_CLICK 310, Impr1: ON_CLICK 311, Impr1
' ------------------------------------------------------------------------------
DLL_ON kg$: ' pour images et impression
nti% = 170: TIMER nti%: TIMER_INTERVAL nti%,40: ON_TIMER nti%, timeur: GOSUB Timon
GOSUB Init
' ==============================================================================
END: ' ========================= E N D =========================================
' ==============================================================================
Init:
fact = 3.7
IF orien% = 0
    IF SCREEN_y < 1200 THEN fact = 3.1
    wp% = 210*fact: hp% = 297*fact: w% = 210: h% = 297
ELSE
    wp% = 297*fact: hp% = 210*fact: w% = 297: h% = 210
END_IF
w0% = wp% + mg + 25: h0% = hp% + 65
WIDTH 0, w0%: HEIGHT 0, h0%: IF HEIGHT(0)<840 THEN HEIGHT 0,840
WIDTH pic, wp%: HEIGHT pic, hp%
2D_TARGET_IS 0: 2D_RECTANGLE mg-1,4,mg+wp%+1,5+hp%
2D_TARGET_IS pic: 2D_CLEAR
2D_FILL_COLOR 148,148,148
2D_FILL_DIAGONAL_CROSS: 2D_RECTANGLE 0,0,wp%,hp%
2D_FILL_SOLID: 2D_FILL_COLOR 255,255,255: 2D_PEN_COLOR 255,255,255
ma% = 12
2D_RECTANGLE ma%+1,ma%+1,wp%-ma%,hp%-ma%: ' avec les marges non imprimables
' échelles de bordure
2D_PEN_COLOR 255,0,0: 2D_PEN_WIDTH 2
FOR x = 5 TO w%-2 STEP 5
    i% = x*fact: j% = ma%: IF BIN_AND(x,1) = 1 THEN j%=j%/2+1
    2D_LINE i%,0,i%,j%
    2D_LINE i%,hp%-j%,i%,hp%
NEXT x
FOR y = 5 TO h%-2 STEP 5
    i% = y*fact: j% = ma%: IF BIN_AND(y,1) = 1 THEN j%=j%/2+1
    2D_LINE 0,i%,j%,i%
    2D_LINE wp%-j%,i%,wp%,i%
NEXT y
2D_PEN_COLOR 0,0,0: 2D_PEN_WIDTH 1
2D_IMAGE_COPY igrz%,0,0,wp%,hp%: ' page vierge initiale, pour raz totale
modi% = 0
RETURN
' ==============================================================================
Chor:
' changement d'orientation portrait/paysage
IF CHECKED(11) = 1
    IF orien% = 0 THEN RETURN
    orien% = 0
ELSE
    IF orien% = 1 THEN RETURN
    orien% = 1
END_IF
GOSUB Timoff
IF grid% = 1 THEN GOSUB Grille: ' suppression de la grille
' 2D_IMAGE_COPY img(na),0,0,wp%,hp%
IF modi% = 1
    i% = MESSAGE_CONFIRMATION_YES_NO("Ignorer le dessin en cours ?")
    IF i% <> 1
        ' enregistrer
        GOSUB Enr: modi% = 0
    END_IF
END_IF
GOSUB Init
GOSUB Inipara: ' réinit paramètres textes et images
GOSUB Timon
RETURN
' ==============================================================================
Razor:
GOSUB Timoff
i% = MESSAGE_CONFIRMATION_YES_NO("Effacer la page en cours ?")
IF i% = 1
    2D_IMAGE_COPY img(na),0,0,wp%,hp%: ' sauvegarde page actuelle
    2D_IMAGE_PASTE igrz%,0,0: ' restore la page vierge initiale
END_IF
HIDE 96: HIDE 115: HIDE 300
MARK_OFF o1+8: MARK_OFF o1+9: MARK_ON o1+1
GOSUB Inipara: ' réinit paramètres textes et images
GOSUB Timon
RETURN
' ==============================================================================
Timon:
HIDE 96: HIDE 115: HIDE 300
TIMER_ON nti%
RETURN
' ==============================================================================
Timoff:
TIMER_OFF nti%
COLOR 8,164,164,164: COLOR 9,164,164,164
RETURN
' ==============================================================================
timeur:
ctt% = ctt%+1
IF ctt% = 10 THEN COLOR 8,255,0,0: COLOR 9,255,255,255
IF ctt% = 20 THEN COLOR 8,255,255,255: COLOR 9,255,0,0: ctt% = 0
x = MOUSE_X_POSITION(pic): y = MOUSE_Y_POSITION(pic)
a$ =  "X= "+STR$(x)+" pixels  Y= "+STR$(y)+" pixels"
a$=a$+" (X= "+STR$(INT(10*x/fact)/10)+" mm  Y= "+STR$(INT(10*y/fact)/10)+" mm)"
CAPTION 0,f$ + "    " + a$
FOR i% = o1+1 TO o1+10
    IF CHECKED(i%) = 1 THEN EXIT_FOR
NEXT i%
fig = i%-o1: ' type d'objet choisi
IF MOUSE_LEFT_DOWN(pic) = 1
    IF grid% = 1 THEN GOSUB Grille: ' suppression grille éventuelle
    2D_IMAGE_COPY img(na),0,0,wp%,hp%: ' sauvegarde préalable
    2D_PEN_DOT: 2D_PEN_COLOR 0,0,0: 2D_PEN_WIDTH 1
    x1 = x: y1 = y: ' origine
    ' IF fig = 11 THEN GOSUB Pastzon: RETURN: ' coller une zone copiée
    truc = 1
END_IF
IF MOUSE_LEFT_UP(pic) = 1
    ' relâche, tracé final
    2D_IMAGE_PASTE img(na),0,0: ' restore l'image avant tracé
Desfig:
    2D_PEN_SOLID: wtt% = POSITION(o2+1): 2D_PEN_WIDTH wtt%: ' épaisseur trait
    IF wtt% = 1 AND tpt% > 0
        IF tpt% = 1
            2D_PEN_DASH
        ELSE
            2D_PEN_DOT
        END_IF
    END_IF
    2D_PEN_COLOR tr,tg,tb
    sx1 = x1: sx2 = x2: sy1 = y1: sy2 = y2
    SELECT fig
        CASE 1: GOSUB Ligne
        CASE 2: GOSUB Rectvide
        CASE 3: GOSUB Rectplein
        CASE 4: GOSUB Cercvide
        CASE 5: GOSUB Cercplein
        CASE 6: GOSUB Remplir
        CASE 7: GOSUB Libre
        CASE 8: GOSUB Texte
        CASE 9: GOSUB Images
        CASE 10: GOSUB Copyzon
        CASE 11: GOSUB Pastzon
    END_SELECT
    IF dep% = 0
        na = na + 1: IF na > nva THEN na = 1
        2D_IMAGE_COPY img(na),0,0,wp%,hp%
    END_IF
    x1 = sx1: x2 = sx2: y1 = sy1: y2 = sy2
    truc = 0
    FILE_SAVE pic,fsc$: ' sauvegarde de secours (pour cas de plantage)
    modi% = 1
END_IF
IF truc = 1
    ' tracé provisoire, en continu
    x2 = x: y2 = y: ' position actuelle
    IF x2=x3 AND y2=y3 THEN RETURN: ' inchangé
    2D_IMAGE_PASTE img(na),0,0
    SELECT fig
        CASE 1: GOSUB Ligne
        CASE 2: GOSUB Rectvide
        CASE 3: GOSUB Rectplein
        CASE 4: GOSUB Cercvide
        CASE 5: GOSUB Cercplein
        CASE 6: GOSUB Remplir
        CASE 7: GOSUB Libre
        CASE 8: ' GOSUB Texte: ' on ne vient jamais ici (?)
        CASE 9: ' GOSUB Images: ' idem
        CASE 10: GOSUB Rectvide: ' rectangle de sélection de la zone à copier
        CASE 11: ' GOSUB Pastzon
    END_SELECT
    x3 = x: y3 = y
END_IF
RETURN
' ==============================================================================
Grille:
' grille, en bascule
IF grid% = 0
    FILE_SAVE pic, fsv$
    j% = hp%*fact
    FOR x = 10 TO 200 STEP 10
        i% = x*fact: 2D_LINE i%,0,i%,j%
    NEXT x
    j% = wp%*fact
    FOR y = 10 TO 290 STEP 10
        i% = y*fact: 2D_LINE 0,i%,j%,i%
    NEXT y
    grid% = 1
ELSE
    FILE_LOAD pic, fsv$: ' restore sans grille
    MARK_OFF ocf+2: grid% = 0
END_iF
RETURN
' ==============================================================================
Ligne:
IF SCANCODE = 160: ' touche shift sur ligne: vertical et horizontal
    IF ABS(y2-y1)<ABS(x2-x1)
        y2 = y1
    ELSE
        x2 = x1
    END_IF
    SCANCODE = 0
END_IF
2D_LINE x1,y1,x2,y2
RETURN
' ==============================================================================
Rectplein:
2D_RECTANGLE x1,y1,x2,y2
RETURN
' ==============================================================================
Rectvide:
2D_LINE x1,y1,x2,y1:2D_POLY_TO x2,y2:2D_POLY_TO x1,y2:2D_POLY_TO x1,y1
RETURN
' ==============================================================================
Cercplein:
2D_CIRCLE x1,y1,SQR(POWER(x2-x1,2) + POWER(y2-y1,2))
RETURN
' ==============================================================================
Cercvide:
r = SQR(POWER(x2-x1,2) + POWER(y2-y1,2)): IF r = 0 THEN RETURN
x = x1+r: y = y1
pas = 1: IF r>20 THEN pas = 10/r
FOR a = pas TO 2*pi+pas STEP pas
    xa = x1+r*COS(a): ya = y1+r*SIN(a): 2D_LINE x,y,xa,ya: x=xa: y=ya
NEXT a
RETURN
' ==============================================================================
Libre:
GOSUB Timoff
2D_PEN_SOLID: 2D_PEN_WIDTH POSITION(o2+1)
x1 = MOUSE_X_LEFT_DOWN(pic): y1 = MOUSE_Y_LEFT_DOWN(pic)
2D_IMAGE_COPY img(na),0,0,wp%,hp%
WHILE MOUSE_LEFT_UP(pic)=0
    x2 = MOUSE_X_POSITION(pic): y2 = MOUSE_Y_POSITION(pic)
    IF x2<>x1 or y2<>y1
        2D_LINE x1,y1,x2,y2: x1 = x2: y1 = y2: wait 100
    END_IF
END_WHILE
na = na + 1: IF na > nva THEN na = 1
2D_IMAGE_COPY img(na),0,0,wp%,hp%
truc = 0
GOSUB Timon
RETURN
' ==============================================================================
Remplir:
na = na + 1: IF na > nva THEN na = 1
2D_IMAGE_COPY img(na),0,0,wp%,hp%: ' sauvegarde préalable
2D_FLOOD x1,y1,cr,cg,cb
truc = 0
RETURN
' ==============================================================================
Texte:
IF COUNT(102) = 0 THEN RETURN
IF CHECKED(280) = 1: ' Rotation texte
    HIDE 96: GOSUB Timoff
    PRINT_TARGET_IS picm%: 2D_TARGET_IS picm%: 2D_FILL_COLOR cr,cg,cb
    font$ = TEXT$(100): fsz% = POSITION(98)
    FONT_NAME picm%, font$: FONT_SIZE picm%, fsz%: FONT_COLOR picm%, tr,tg,tb
    FONT_BOLD_OFF picm%: FONT_ITALIC_OFF picm%: FONT_UNDERLINE_OFF picm%
    IF CHECKED(103) = 1 THEN FONT_BOLD picm%
    IF CHECKED(104) = 1 THEN FONT_ITALIC picm%
    IF CHECKED(105) = 1 THEN FONT_UNDERLINE picm%
    y = 0: i% = 0: j% = TEXT_HEIGHT("Ay",picm%)
    FOR yt% = 1 TO COUNT(102)
        txt$ = ITEM_READ$(102, yt%)
        IF TEXT_WIDTH(txt$,picm%)>i% THEN i%=TEXT_WIDTH(txt$,picm%): ' largeur totale
        y = y + j%
    NEXT yt%
    WIDTH picm%,i%: HEIGHT picm%,y
    y = 0
    FOR yt% = 1 TO COUNT(102)
        txt$ = ITEM_READ$(102, yt%): PRINT_LOCATE 0,y: PRINT txt$: y = y + j%
    NEXT yt%
    FILE_SAVE picm%, fsv$
    a$ = "L": IF CHECKED(283) = 1 THEN a$ = "R"
    ImgRotate(fsv$,"",a$): ' rotation de l'image de 90°, résultat dans clipboard
    CLIPBOARD_PASTE igtr%
    WHILE MOUSE_LEFT_DOWN(pic) = 0: WAIT 100: END_WHILE
    WHILE MOUSE_LEFT_UP(pic) = 0: WAIT 100: END_WHILE
    x1 = MOUSE_X_POSITION(pic)
    y1 = MOUSE_Y_POSITION(pic)
    2D_TARGET_IS pic
    2D_IMAGE_COPY img(na),0,0,wp%,hp%: ' sauvegarde état précédent
    2D_IMAGE_PASTE igtr%,x1,y1: ' clipboard -> picture
    na = na + 1: IF na > nva THEN na = 1
    2D_IMAGE_COPY img(na),0,0,wp%,hp%
    GOSUB Timon
    RETURN
END_IF
IF dep% = 0
    HIDE 96: GOSUB Timoff
    font$ = TEXT$(100)
    fsz% = POSITION(98)
    IF COUNT(102) = 0 THEN GOSUB Timon: RETURN
    WHILE MOUSE_LEFT_DOWN(pic) = 0: WAIT 100: END_WHILE
    WHILE MOUSE_LEFT_UP(pic) = 0: WAIT 100: END_WHILE
    x1 = MOUSE_X_POSITION(pic)
    y1 = MOUSE_Y_POSITION(pic)
    2D_IMAGE_COPY img(na),0,0,wp%,hp%
END_IF
IF CHECKED(107) = 1
    ' Fond transparent
    PRINT_TARGET_IS 106
    FONT_NAME 106, font$: FONT_SIZE 106, fsz%: FONT_COLOR 106, tr,tg,tb
    FONT_BOLD_OFF 106: FONT_ITALIC_OFF 106: FONT_UNDERLINE_OFF 106
    IF CHECKED(103) = 1 THEN FONT_BOLD 106
    IF CHECKED(104) = 1 THEN FONT_ITALIC 106
    IF CHECKED(105) = 1 THEN FONT_UNDERLINE 106
    2D_TARGET_IS 106: 2D_FILL_COLOR 254,254,254: 2D_TARGET_IS pic
    FOR yt% = 1 TO COUNT(102)
        txt$ = ITEM_READ$(102, yt%)
        PRINT_LOCATE 0,0: PRINT txt$
        hc% = TEXT_HEIGHT(txt$,106): lc% = TEXT_WIDTH(txt$,106)
        FOR j% = 0 TO hc%-1
            FOR i% = 0 TO lc%-1 step 1
                IF COLOR_PIXEL_RED(106,i%,j%) <> 254
                    2D_PEN_COLOR tr,tg,tb: 2D_POINT x1+i%, y1+j%
                END_IF
            NEXT i%
            DISPLAY
        NEXT j%
        y1 = y1 + hc%: IF y1 > (hp%-15) THEN EXIT_FOR
    NEXT yt%
ELSE
    ' Fond opaque (couleur de remplissage)
    PRINT_TARGET_IS pic: 2D_TARGET_IS pic: 2D_FILL_COLOR cr,cg,cb
    FONT_NAME pic, font$: FONT_SIZE pic, fsz%: FONT_COLOR pic, tr,tg,tb
    FONT_BOLD_OFF pic: FONT_ITALIC_OFF pic: FONT_UNDERLINE_OFF pic
    IF CHECKED(103) = 1 THEN FONT_BOLD pic
    IF CHECKED(104) = 1 THEN FONT_ITALIC pic
    IF CHECKED(105) = 1 THEN FONT_UNDERLINE pic
    FOR yt% = 1 TO COUNT(102)
        txt$ = ITEM_READ$(102, yt%)
        PRINT_LOCATE x1,y1: PRINT txt$
        y1 = y1 + TEXT_HEIGHT(txt$,pic)
    NEXT yt%
END_IF
IF dep% = 0
    na = na + 1: IF na > nva THEN na = 1
    2D_IMAGE_COPY img(na),0,0,wp%,hp%
END_IF
GOSUB Timon
RETURN
' ==============================================================================
Txtf:
' Fermeture par la croix (abandon)
IF CLICKED(111) = 1 THEN MARK_ON o1+1: ' bouton Annuler
HIDE 96: GOSUB Timon
RETURN
' ==============================================================================
Track:
ga% = pOSITION(130): lu% = POSITION(133): co% = POSITION(136)
TEXT 131,STR$(ga%):TEXT 134,STR$(lu%):TEXT 137,STR$(co%)
IF f$ = "" THEN RETURN
FILE_LOAD picm%,f$: GAMMA picm%,ga%: BRIGHTNESS picm%,lu%: CONTRAST picm%,co%
CLIPBOARD_COPY picm%: CLIPBOARD_PASTE 150
RETURN
' ==============================================================================
Trackp:
TEXT 302,STR$(POSITION(303))
RETURN
' ==============================================================================
Copyzon:
' copie d'une région pour collage ultérieur
2D_IMAGE_COPY igcp%,x1,y1,x2,y2
RETURN
' ==============================================================================
Pastzon:
IF CHECKED(o1+11) = 0 THEN RETURN
' collage de la zone copiée
2D_IMAGE_PASTE igcp%,x1,y1
RETURN
' ==============================================================================
Dimg:
GOSUB Timoff
f$ = ""
SHOW 115: TO_FOREGROUND 115
RETURN
' ==============================================================================
chimg:
f$ = FILE_NAME$(90): TEXT 116, f$
IF FILE_EXISTS(f$)=0 THEN f$="": CAPTION 117," -> Fichier non trouvé !": RETURN
chimg1:
ga% = 0: lu% = 0: co% = 0
POSITION 130,ga%: POSITION 133,lu%: POSITION 136,co%
MARK_OFF 140
ImgSize(f$): wi% = rs_w%: hi% = rs_h%: ' largeur et hauteur d'origine de l'image
WIDTH picm%,wi%: HEIGHT picm%,hi%: ' pour retouches éventuelles
ra = wi%/hi%
a$ =  STR$(wi%)+" x "+STR$(hi%)+" pixels"
a$ = a$+" (= "+STR$(INT(10*wi%/fact)/10)+" x "+STR$(INT(10*hi%/fact)/10)+" mm)"
CAPTION 117, a$
i% = wi%/fact: j% = hi%/fact: ' en mm, arrondi au plus proche
POSITION 119,wi%: POSITION 120,hi%: POSITION 122,i%: POSITION 123,j%
WIDTH 150, 180*ra
i% = DLL_Call1("LoadAnyImageFile",ADR(f$)): ' image -> clipboard
CLIPBOARD_PASTE 150
RETURN
' ==============================================================================
Red1:
IF f$ = "" THEN RETURN
OFF_CHANGE 119: OFF_CHANGE 120: OFF_CHANGE 122: OFF_CHANGE 123
i% = POSITION(119)/ra: POSITION 120, i%
i% = POSITION(119)/fact: j% = POSITION(120)/fact: POSITION 122,i%: POSITION 123,j%
GOTO Reda
Red2:
IF f$ = "" THEN RETURN
OFF_CHANGE 119: OFF_CHANGE 120: OFF_CHANGE 122: OFF_CHANGE 123
i% = ra*POSITION(120): POSITION 119, i%
i% = POSITION(119)/fact: j% = POSITION(120)/fact: POSITION 122,i%: POSITION 123,j%
GOTO reda
Red3:
IF f$ = "" THEN RETURN
OFF_CHANGE 119: OFF_CHANGE 120: OFF_CHANGE 122: OFF_CHANGE 123
i% = POSITION(122)/ra: POSITION 123, i%
i% = fact*POSITION(122): j% = fact*POSITION(123): POSITION 119,i%: POSITION 120,j%
GOTO Reda
Red4:
IF f$ = "" THEN RETURN
OFF_CHANGE 119: OFF_CHANGE 120: OFF_CHANGE 122: OFF_CHANGE 123
i% = ra*POSITION(123): POSITION 122, i%
i% = fact*POSITION(122): j% = fact*POSITION(123): POSITION 119,i%: POSITION 120,j%
GOTO Reda
Reda:
ON_CHANGE 119,Red1: ON_CHANGE 120,Red2: ON_CHANGE 122,Red3: ON_CHANGE 123,Red4
RETURN
' ==============================================================================
Images:
IF dep% = 0
    HIDE 115
    a$ = TEXT$(116)
    IF FILE_EXISTS(a$) = 0 THEN GOTO Imagfi
    GOSUB Timoff
    f$ = a$
    IF CHECKED(140) = 1 THEN f$ = fsc$: ' l'image a été pivotée
    WHILE MOUSE_LEFT_DOWN(pic) = 0: WAIT 100: END_WHILE
    WHILE MOUSE_LEFT_UP(pic) = 0: WAIT 100: END_WHILE
    x1 = MOUSE_X_POSITION(pic)
    y1 = MOUSE_Y_POSITION(pic)
    2D_IMAGE_COPY img(na),0,0,wp%,hp%: ' sauvegarde état précédent
    i% = DLL_Call1("LoadAnyImageFile",ADR(f$)): ' fichier image -> clipboard
    IF ga%<>0 OR lu%<>0 OR co%<>0
        ' corrections
        CLIPBOARD_PASTE picm%
        GAMMA picm%, ga%: BRIGHTNESS picm%,lu%: CONTRAST picm%,co%
        CLIPBOARD_COPY picm%
    END_IF
    w% = POSITION(119)
    IF w% <> 0 AND w% <> wi%: ' redimensionnement demandé
        h% = w%*hi%/wi%: ' proportionnel
        i% = DLL_Call2("ResizePicture",w%,h%): ' se fait dans le clipboard
    END_IF
    CLIPBOARD_PASTE igtr%
END_IF
2D_IMAGE_PASTE igtr%,x1,y1: ' clipboard -> picture
IF dep% = 0
    na = na + 1: IF na > nva THEN na = 1
    2D_IMAGE_COPY img(na),0,0,wp%,hp%
END_IF
Imagfi:
GOSUB Timon
RETURN
' ==============================================================================
Imgf:
IF CLICKED(131) = 1 THEN MARK_ON o1+1: ' bouton Annuler
' ou fermeture par la croix, abandon
HIDE 115: GOSUB Timon
RETURN
' ==============================================================================
Coultrac:
xa = MOUSE_X_LEFT_DOWN(oct): ya = MOUSE_Y_LEFT_DOWN(oct)
j% = INT(ya/hc): i% = INT(xa/lc): c = 2*j% + i%: ' couleur 0 à 15
RESTORE
FOR i% = 0 TO c*3: READ tr: NEXT i%: READ tg: READ tb
2D_PEN_COLOR tr,tg,tb
COLOR oct+1, tr,tg,tb
RETURN
' ==============================================================================
Coulfond:
xa = MOUSE_X_LEFT_DOWN(ocf): ya = MOUSE_Y_LEFT_DOWN(ocf)
j% = INT(ya/hc): i% = INT(xa/lc): c = 2*j% + i%: ' couleur 0 à 15
RESTORE
FOR i% = 0 TO c*3: READ cr: NEXT i%: READ cg: READ cb
2D_FILL_COLOR cr,cg,cb
COLOR ocf+1, cr,cg,cb
RETURN
' ==============================================================================
New:
GOSUB Timoff
i% = MESSAGE_CONFIRMATION_YES_NO("Effacer le dessin en cours ?")
IF i% = 1 THEN CLS
MARK_ON o1+1
GOSUB Inipara: ' réinit paramètres textes et images
modi% = 0
GOSUB Timon
RETURN
' ==============================================================================
Opn:
GOSUB Timoff
f$ = FILE_NAME$(90)
IF f$ = "_" OR f$ = "" THEN GOSUB Timon: RETURN
ImgSize(f$): IF rs_w% > rs_h% THEN orien% = 1: GOSUB Init: ' orientation paysage
FILE_LOAD pic, f$: modi% = 0
2D_IMAGE_COPY img(na),0,0,wp%,hp%
MARK_ON o1+1
GOSUB Inipara: ' réinit paramètres textes et images
GOSUB Timon
RETURN
' ==============================================================================
Secours:
GOSUB Timoff
IF FILE_EXISTS(fsc$) = 0
    MESSAGE "Sauvegarde de secours non trouvée !"
ELSE
    ImgSize(fsc$): IF rs_w% > rs_h% THEN orien% = 1: GOSUB Init: ' orientation paysage
    FILE_LOAD pic, fsc$: modi% = 0
    2D_IMAGE_COPY img(na),0,0,wp%,hp%
    MARK_ON o1+1
END_IF
GOSUB Inipara: ' réinit paramètres textes et images
GOSUB Timon
RETURN
' ==============================================================================
Carte:
' Base de cartes sur A4 (deux pliables par page)
2D_PEN_COLOR 128,128,128: 2D_PEN_wIDTH 1
2D_LINE wp%/2,0,wp%/2,hp%: 2D_LINE 0,hp%/2,wp%,hp%/2
RETURN
' ==============================================================================
Enr:
IF f$ = "" OR f$ = "_" THEN GOTO Ens
IF UPPER$(RIGHT$(f$, 4)) <> ".BMP" THEN GOTO Ens
GOSUB Timoff
FILE_SAVE pic, f$: modi% = 0
GOSUB Timon
RETURN
' ==============================================================================
Ens:
' enregistrement au format bmp exclusivement.
GOSUB Timoff
m$ = FILE_NAME$(91)
IF m$ = "_" OR m$= "" THEN GOSUB Timon: RETURN
f$ = m$: IF INSTR(f$,".") < 1 THEN f$ = f$+".bmp"
FILE_SAVE pic, f$: modi% = 0
GOSUB Timon
RETURN
' ==============================================================================
Impr:
GOSUB Timoff
SHOW 300
RETURN
' ==============================================================================
Impr1:
HIDE 300
IF CLICKED(311) = 1 THEN GOSUB Timon: RETURN: ' Annulé
2D_TARGET_IS pic
' Modifier le gamma général de la feuille ?
IF POSITION(303) <> 0
    2D_IMAGE_COPY img(na),0,0,wp%,hp%: ' sauvegarde avant gamma
    GAMMA pic, POSITION(303)
END_IF
2D_IMAGE_COPY igtr%,13,13,wp%-12,hp%-12: FILE_SAVE igtr%, fp$
IF POSITION(303) <> 0
    2D_IMAGE_PASTE img(na),0,0: ' restore l'avant gamma
    GAMMA pic, 0
END_IF
HIDE 300
IF wp% > hp%
    ' Orientation 'paysage'
    i% = DLL_Call4("PrinterManager",4,ADR(hnd%),ADR(cnv%),1)
END_IF
i% = DLL_Call4("PrinterManager",1,ADR(hnd%),ADR(cnv%),0): ' init
wip% = DLL_Call6("PrinterFunction",8,ADR(hnd%),ADR(cnv%),7,0,0): ' largeur utile (=4812)
hip% = DLL_Call6("PrinterFunction",8,ADR(hnd%),ADR(cnv%),8,0,0): ' hauteur utile (=6863)
i% = DLL_Call6("PrinterFunction",7,ADR(hnd%),ADR(cnv%),ADR(fp$),wip%,hip%)
i% = DLL_Call4("PrinterManager",3,ADR(hnd%),ADR(cnv%),0): ' lancement impression
i% = MESSAGE_CONFIRMATION_YES_NO("Suppression du fichier temporaire d'impression ?")
IF i% = 1 THEN FILE_DELETE fp$: ' suppression du fichier image
GOSUB Timon
RETURN
' ==============================================================================
Quit:
GOSUB Timoff
IF modi% = 1
    i% = MESSAGE_CONFIRMATION_YES_NO("Ignorer le dessin en cours ?")
    IF i% <> 1
        ' enregistrer
        GOSUB Enr
        modi% = 0
        GOSUB Timoff
    END_IF
END_IF
DLL_OFF
TERMINATE
' ==============================================================================
Anul:
' annulation en boucle sur nva (=5) éléments
na = na - 1: IF na < 1 THEN na = nva
2D_IMAGE_PASTE img(na),0,0
RETURN
' ==============================================================================
Dtxt:
GOSUB Timoff
SHOW 96: TO_FOREGROUND 96
RETURN
' ==============================================================================
vfont:
IF ITEM_INDEX(97) > 0 THEN font$ = ITEM_INDEX$(97): TEXT 100, font$
fsz% = POSITION(98): FONT_NAME 102, font$: FONT_SIZE 102, fsz%
FONT_BOLD_OFF 102: IF CHECKED(103) = 1 THEN FONT_BOLD 102
FONT_ITALIC_OFF 102: IF CHECKED(104)=1 THEN FONT_ITALIC 102
FONT_UNDERLINE_OFF 102: IF CHECKED(105)=1 THEN FONT_UNDERLINE 102
FONT_COLOR 102,tr,tg,tb
RETURN
' ==============================================================================
Trait_e:
HIDE o3: IF POSITION(o2+1) = 1 THEN SHOW o3
RETURN
' ==============================================================================
Trait_t:
' Type de trait (seulement pour épaisseur 1 pixel)
2D_TARGET_IS o3: 2D_PEN_COLOR 255,255,255
FOR i% = 5 TO 25 STEP 10: 2D_LINE 0,i%,8,i%: NEXT i%
i% = MOUSE_Y_LEFT_DOWN(o3)
IF i%<10
    j%=5: tpt% = 0: ' trait continu
ELSE
    IF i%<20
        j%=15: tpt% = 1: ' tirets
    ELSE
        j%=25: tpt% = 2: ' pointillés
    END_IF
END_IF
2D_PEN_COLOR 255,0,0: 2D_LINE 0,j%,8,j%
2D_TARGET_IS pic
RETURN
' ==============================================================================
Applic:
' application des paramètres 'texte'
font$ = TEXT$(100)
fsz% = POSITION(98)
FONT_NAME 102, font$: FONT_SIZE 102, fsz%: FONT_COLOR 102, tr,tg,tb
FONT_BOLD_OFF 102: FONT_ITALIC_OFF 102: FONT_UNDERLINE_OFF 102
IF CHECKED(103) = 1 THEN FONT_BOLD 102
IF CHECKED(104) = 1 THEN FONT_ITALIC 102
IF CHECKED(105) = 1 THEN FONT_UNDERLINE 102
IF CHECKED(288) = 1 AND COUNT(102) > 0: ' centrage
    FONT_NAME 296,font$: FONT_SIZE 296,POSITION(98)
    FONT_BOLD_OFF 296: FONT_ITALIC_OFF 296: FONT_UNDERLINE_OFF 296
    IF CHECKED(103) = 1 THEN FONT_BOLD 296
    IF CHECKED(104) = 1 THEN FONT_ITALIC 296
    IF CHECKED(105) = 1 THEN FONT_UNDERLINE 296
    j% = 0
    FOR i% = 1 TO COUNT(102)
        a$ = ITEM_READ$(102,i%)
        w% = TEXT_WIDTH(a$,296)
        IF w%>j% THEN j%=w%
    NEXT i%
    FOR i% = 1 TO COUNT(102)
        a$ = ITEM_READ$(102,i%): w% = TEXT_WIDTH(a$,296)
        WHILE w%<j%: a$=" "+a$+" ": w% = TEXT_WIDTH(a$,296): END_WHILE
        ITEM_DELETE 102,i%: ITEM_INSERT 102,i%,a$
    NEXT i%
END_IF
RETURN
' ==============================================================================-
Dimtext:
FONT_NAME 296,font$: FONT_SIZE 296,POSITION(98)
FONT_BOLD_OFF 296: FONT_ITALIC_OFF 296: FONT_UNDERLINE_OFF 296
IF CHECKED(103) = 1 THEN FONT_BOLD 296
IF CHECKED(104) = 1 THEN FONT_ITALIC 296
IF CHECKED(105) = 1 THEN FONT_UNDERLINE 296
hc% = COUNT(102)*TEXT_HEIGHT("ABC",296): ' hauteur totale texte
lc% = 0
IF COUNT(102) > 0
    FOR yt% = 1 TO COUNT(102)
        txt$ = ITEM_READ$(102,yt%)
        IF TEXT_WIDTH(txt$,296)>lc% THEN lc%=TEXT_WIDTH(txt$,296)
    NEXT yt%
END_IF
TEXT 292,STR$(lc%): TEXT 293,STR$(hc%): ' dimensions texte en pixels
TEXT 294,STR$(INT(10*lc%/fact)/10): tEXT 295,STR$(INT(10*hc%/fact)/10): ' idem en mm
RETURN
' ==============================================================================
Deplace:
' Déplacement de la dernière figure tracée d'1 pixel (boutons flèches)
IF fig = 6 OR fig = 7 OR fig = 10 THEN RETURN: ' remplir ou tracé libre
IF fig=8 AND CHECKED(280) = 1 THEN fig=9: ' texte pivoté
GOSUB Timoff
i% = NUMBER_CLICK
' a$ = "x1="+STR$(x1)+" y1="+STR$(y1): Trace(1,a$)
SELECT i%
    CASE 402: y1 = y1-1: y2 = y2-1: ' haut
    CASE 403: y1 = y1+1: y2 = y2+1: ' bas
    CASE 404: x1 = x1-1: x2 = x2-1: ' gauche
    CASE 405: x1 = x1+1: x2 = x2+1: ' droite
END_SELECT
2D_IMAGE_PASTE img(na-1),0,0: ' image précédente
dep% = 1: GOSUB Desfig: dep% = 0
GOSUB Timon
RETURN
' ==============================================================================
Inipara:
' Réinitialisation des paramètres texte et image
TEXT 100,"Arial": POSITION 98,10: ' fonte, taille
MARK_OFF 103: MARK_OFF 104: MARK_OFF 105: MARK_OFF 288: MARK_OFF 280
POSITION 130,0: POSITION 133,0: POSITION 136,0
RETURN
 ' =============================================================================
Rotimage:
IF CHECKED(140) = 0
    ' rétablir l'image initiale (annuler la rotation)
    f$ = TEXT$(116): GOSUB chimg1
    RETURN
END_IF
' Rotation de l'image choisie (90° Gauche ou Droite)
a$ = "L": IF CHECKED(443) = 1 THEN a$ = "R"
ImgRotate(f$,"",a$): ' rotation dans le clipboard
CLIPBOARD_PASTE igtr%: FILE_SAVE igtr%,fsc$
i% = wi%: wi% = hi%: hi% = i%
WIDTH picm%,wi%: HEIGHT picm%,hi%: ' pour retouches éventuelles
ra = wi%/hi%
a$ = STR$(wi%)+" x "+STR$(hi%)+" pixels"
a$ = a$+" (= "+STR$(INT(10*wi%/fact)/10)+" x "+STR$(INT(10*hi%/fact)/10)+" mm)"
CAPTION 117, a$
i% = wi%/fact: j% = hi%/fact: ' en mm, arrondi au plus proche
POSITION 119,wi%: POSITION 120,hi%: POSITION 122,i%: POSITION 123,j%
POSITION 130,0: POSITION 133,0: POSITION 136,0
WIDTH 150, 180*ra
CLIPBOARD_PASTE 150
RETURN
' ==============================================================================
Hlp:
GOSUB Timoff
a$ = CHR$(10)
b$ = CHR$(151)
m$ = CHR$(9)+CHR$(9)+CHR$(9)+CHR$(9)+"AIDE"+a$+CHR$(9)+CHR$(9)+CHR$(9)+CHR$(9)+"==="+a$+a$
m$ = m$ + "Modification des paramètres :" + a$
m$ = m$ + STRING$(13,b$) + a$
m$ = m$ + "- Paramètre général : orientation 'Portrait' ou 'Paysage', puis pour chaque" + a$
m$ = m$ + "  élément:" + a$
m$ = m$ + "- Largeur de trait: de 1 à 20 pixels" + a$
m$ = m$ + "- Type de trait (seulement si épaisseur 1 pixel): continu, tirets, pointillés"+a$
m$ = m$ + "- Couleur du trait et des textes, ou couleur du fond :" + a$
m$ = m$ + "      clic la couleur désirée parmi les 16 couleurs de base." + a$+a$
m$ = m$ + "Dessin des éléments :" + a$
m$ = m$ + STRING$(9,b$) + a$
m$ = m$ + "  Clic le départ, maintenir enfoncé, déplacer, relâcher à l'arrivée." + a$
m$ = m$ + "1_ Ligne :        Clic le départ, maintenir, relâcher à l'arrivée." + a$
m$ = m$ + CHR$(9)+"        (Ligne horizontale ou verticale: maintenir shift enfoncé)."+a$
m$ = m$ + "2_ Rectangle : Clic un coin, maintenir, relâcher au coin opposé." + a$
m$ = m$ + "3_ Cercle :      Clic le centre, agrandir au diamètre désiré, relâcher." + a$
m$ = m$ + "4_ Remplir :    Remplissage de figures fermées avec la couleur de fond choisie." + a$
m$ = m$ + "5_ Tracé libre : Cliquer le départ, dessiner, relâcher." + a$
m$ = m$ + "6_ Texte :          Choisir les paramètres fonte et taille, enrichissements, fond"+a$
m$ = m$ + CHR$(9)+"        transparent ou non, entrer ou 'coller' le texte, puis clic 'OK'."+a$
m$ = m$ + CHR$(9)+"        Cliquer l'emplacement récepteur (coin supérieur gauche)." + a$
m$ = m$ + "7_ Image :        Insertion d'une image quelconque, aux formats BMP, JPG, GIF"+a$
m$ = m$ + CHR$(9)+"        ou ICO, à redimensionner éventuellement, ou rectifier la"+a$
m$ = m$ + CHR$(9)+"        luminosité (gamma)." + a$
m$ = m$ + CHR$(9)+"        Clic 'OK', puis cliquer l'emplacement (coin supérieur gauche)."+a$
m$ = m$ + "8_ Copier/Coller : Recopie d'une zone de la page dans une autre: délimiter la"+a$
m$ = m$ + CHR$(9)+"        zone à copier à la souris, relâcher. Cocher 'Coller zone', puis"+a$
m$ = m$ + CHR$(9)+"        cliquer le coin haut gauche de la zone de réception."+a$+a$
m$ = m$ + "Après chaque dessin d'élément (sauf remplissage et tracé libre), il est possible"+a$
m$ = m$ + "de déplacer cet élément d'1 pixel à la fois dans les quatre directions par clic"+a$
m$ = m$ + "sur les boutons flèches du bas (zone des commandes)."+a$+a$
m$ = m$ + "Il est possible à tout moment d'afficher une grille au pas de 1 cm. Cette grille"+a$
m$ = m$ + "sera automatiquement effacée au moment du dessin d'élément suivant."+a$+a$
m$ = m$ + "Menu :" + a$
m$ = m$ + STRING$(3,b$) + a$
m$ = m$ + "- Fichier :  Fonctions classiques, + rappel de la dernière sauvegarde automatique,"+a$
m$ = m$ + "- Edition :  Annulation de la dernière opération (5 niveaux d'annulation)," + a$
m$ = m$ + CHR$(9)+"  ou Effacement total de la page." + a$
m$ = m$ + CHR$(9)+"  Tracé des deux axes médians, horizontal et vertical (pliage)."+ a$
m$ = m$ + "- Aide :      Affichage de ce texte." + a$ + a$
m$ = m$ + "Remarques :" + a$
m$ = m$ + STRING$(5,b$) + a$
m$ = m$ + "- Après chaque dessin d'élément, une sauvegarde de sécurité est effectuée."+a$
m$ = m$ + "  Il est ainsi possible en cas de plantage ou autre motif de repartir du"+a$
m$ = m$ + "  dessin qui était en cours (menu 'Fichier', 'Ouvrir la sauvegarde')."+a$
m$ = m$ + "- L'enregistrement éventuel de l'image de la page ('Fichier', 'Enregistrer')" + a$
m$ = m$ + "  se fera au format BMP, pour reprise ultérieure éventuelle." + a$
m$ = m$ + "- L'impression ('Fichier', 'Imprimer') se fait de manière transparente, dès" + a$
m$ = m$ + "  le clic sur le bouton 'Imprimer' (imprimante supposée prête)." + a$
m$ = m$ + "- Le petit rectangle en haut à gauche clignote quand le timer est actif"+a$
m$ = m$ + "  (en attente de clic dans la page)." + a$
m$ = m$ + "- Les coordonnées du curseur sont affichées en permanence dans le bandeau"+a$
m$ = m$ + "    supérieur, en pixels et en millimètres."+a$
m$ = m$ + "- Ressources externes : KGF.dll pour les images et l'impression."+a$
MESSAGE m$
GOSUB Timon
RETURN
' ==============================================================================
SUB ImgSize(f$)
IF VARIABLE("rs_w%") = 0 THEN DIM rs_w%
IF VARIABLE("rs_h%") = 0 THEN DIM rs_h%
i% = DLL_Call3("AnalyzeImageFile",ADR(f$),adr(rs_w%),ADR(rs_h%)): ' -> w% x h%
END_SUB
' ==============================================================================
SUB Trace(n,a$)
' Debug: affichage du texte a$ au point (ou n° de ligne) n
IF OBJECT_EXISTS(800) = 0
    FORM 800: LEFT 800,wIDTH(0): WIDTH 800,150: HEIGHT 800,100: BORDER_SMALL 800
END_IF
IF OBJECT_EXISTS(801)=0
    MEMO 801: PARENT 801,800: FULL_SPACE 801: COLOR 801,255,255,0: FONT_BOLD 801
END_IF
ITEM_ADD 801,STR$(n)+": "+a$
TO_FOREGROUND 800
END_SUB
' ==============================================================================
SUB ImgRotate(f$,fr$,LR$)
' Rotation d'une image f$ de 90° à gauche (L) ou à droite (R)
' résultat dans le fichier fr$, ou clipboard si fr$ = ""
i% = DLL_Call1("LoadAnyImageFile",ADR(f$)): ' image -> clipboard
i% = DLL_Call0("LoadPicture"): ' clipboard -> image interne
IF LR$ = "R"
    i% = DLL_Call0("Rotate90"): ' rotation 90° à droite
ELSE
    i% = DLL_Call0("RotateM90"): ' rotation 90° à gauche
END_IF
i% = DLL_Call0("SavePicture"): ' récupération de l'image interne -> clipboard
IF fr$ <> "" THEN i% = DLL_Call1("SaveAnyImageFile",ADR(fr$)): ' clipboard->fr$
END_SUB
' ==============================================================================
Edit 28/01 et 29/01
Edit 02/02


Dernière édition par JL35 le Dim 2 Fév 2014 - 20:42, édité 2 fois
Revenir en haut Aller en bas
JL35




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

Dessin sur A4 - Page 2 Empty
MessageSujet: Re: Dessin sur A4   Dessin sur A4 - Page 2 EmptyMar 28 Jan 2014 - 15:31

Mise à jour ci-dessus, avec ajout de:
- possibilité de délimiter une zone de la feuille à la souris pour la 'copier' et la 'coller' ailleurs dans la page.
- possibilité de tracer automatiquement les deux axes médians de la feuille, horizontal et vertical (menu 'Fichier'), pour par exemple découpage et/ou pliage ultérieur.
- la saisie de texte se fait avec les paramètres actifs en temps réel, et non plus seulement au moment de l'importation (fonte, taille, enrichissements). Possibilité de centrage relatif, si plusieurs lignes.
- ajout d'une sauvegarde automatique après chaque tracé d'un élément, pour les cas rares de plantage ou incident, il est ainsi possible de repartir de l'état précédent du dessin (menu Fichier, Ouvrir la sauvegarde).

En effet, il subsiste des cas (heureusement rares) de plantages inexpliqués avec des causes ésotériques: Access violation, Runtime error, 'No corresponding End_While' pointant sur un numéro de ligne qui correspond à un sous-programme (?) et aussi, moins gênant, au moment de la fermeture: 'Panoramic a cessé de fonctionner'.

Je subodore que tout ceci est dû à l'usage du timer qui se réveille à n'importe quel moment et qui doit entrer en collision avec d'autres choses, un traitement en cours, par exemple en plein milieu d'une boucle While/End_while.
Peut-être que l'utilisation du timer n'est pas très orthodoxe et qu'il faudrait l'interrompre plus souvent;
Mais bon, ce n'est pas vraiment gênant.

Comme dit ci-dessus, l'essentiel est dans l'Aide.
Revenir en haut Aller en bas
JL35




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

Dessin sur A4 - Page 2 Empty
MessageSujet: Re: Dessin sur A4   Dessin sur A4 - Page 2 EmptyDim 2 Fév 2014 - 20:49

Encore quelques modifs et mises à jour, améliorations j'espère, faites au fur et à mesure, du coup je n'en ai pas fait la liste.

La dernière: choix de la nature du trait, solide, tirets ou pointillés, mais seulement pour une épaiseur de 1 pixel (contrainte Panoramic).

Je ne vois plus de plantages intempestifs avec des access violation et autres du même acabit, ce qui ne veut pas dire qu'il n'y en a plus, mais pour ces cas il y a des solutions de secours.
Je pense que ça venait (ou vient ?) du fait de traitements un peu longs, ou qui attendent une réponse, sans avoir désactivé le timer, et là les attentes de traitement du timer s'empilent jusqu'au plantage.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Dessin sur A4 - Page 2 Empty
MessageSujet: Re: Dessin sur A4   Dessin sur A4 - Page 2 EmptyLun 3 Fév 2014 - 11:31

Sympa le programme et gros morceau.

A+
Revenir en haut Aller en bas
Contenu sponsorisé





Dessin sur A4 - Page 2 Empty
MessageSujet: Re: Dessin sur A4   Dessin sur A4 - Page 2 Empty

Revenir en haut Aller en bas
 
Dessin sur A4
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Dessin 2d
» Dessin
» Dessin d'arc
» Dessin(x)
» Dessin INDUSTRIEL animé

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: