JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Dessiner sur A4 Mar 4 Jan 2022 - 22:14 | |
| La sub ci-dessous permet de créer un Picture au format d'une feuille A4 grandeur nature, orientation portrait/paysage, avec éventuellement des échelles haut et gauches en pixels ou en millimètres. Comme précisé, il faut adapter en fonction de son moniteur les deux variables wp et hp qui représentent en pixels une page A4 210 et 297 millimètres. Perso j'ai un écran de 24", 1920x1200 pixels, ce qui permet de représenter la page dans son intégralité. - Code:
-
A4(1,0,0,2): ' Picture A4 Portrait avec échelles en mm ' ... puis utilisation du picture à sa guise, texte, dessins, images, etc. END
SUB A4(p%,or%,mni%,ech%) ' Création d'un Picture image A4 grandeur nature ' or% = 0 portrait, or% = 1 paysage ' mni% = 1: visualisation des marges non imprimables ' (12 pixels sur image A4, =75 pixels sur imprimante) ' ech% = 1: échelles en pixels, = 2 échelles en mm (=0 pas d'échelles) ' maj 4/1/2022 DIM_LOCAL fm%,w%,h%,wp,hp,i,k,k1,ww,ppm,x,y,we,he,st,a$ ww = 0: IF ech%>0 THEN ww = 20: ' largeur des échelles éventuelles ' ====== DIMENSIONS CI-DESSOUS À AJUSTER EN FONCTION DU MONITEUR ====== wp = 778: hp = 1100: ' dimensions à l'écran d'une feuille A4, en pixels ' ===================================================================== ppm = hp/297: ' pixels par mm à l'écran w% = wp: h% = hp: ' image feuille A4 portrait IF or% = 1 THEN w% = hp: h% = wp: ' paysage ' +++++++++++++++ 1100/297 = 3,704 pixels par mm à l'écran +++++++++++++++ fm% = 950: FORM fm%: BORDER_SMALL fm% i = WIDTH_CLIENT(fm%): WIDTH fm%,w%+(WIDTH(fm%)-i)+ww i = HEIGHT_CLIENT(fm%): HEIGHT fm%,h%+(HEIGHT(fm%)-i)+ww COLOR fm%,255,255,0: CAPTION fm%,STRING$(105," ")+"- PAGE A4 -" PICTURE p%: PARENT p%,fm%: TOP p%,ww: LEFT p%,ww WIDTH p%,w%: HEIGHT p%,h%: ' A4 grandeur nature IF mni% = 1 ' matérialisation de la zone externe non imprimable IrfanView (3 mm) COLOR p%,220,220,220: 2D_TARGET_IS p%: 2D_PEN_COLOR 220,220,220 2D_RECTANGLE 11,11,w%-11,h%-11: 2D_PEN_COLOR 0,0,0 END_IF ' PAUSE 100 IF ech% > 0: ' affichage échelle pixels ou mm en haut et à gauche IF ech% = 1 we = w%: he = h%: st = 10: a$ = "(échelle 10 pixels)" ELSE we = 210: he = 297: IF or% = 1 THEN we = 297: he = 210 st = 1: a$ = "(échelle 1 mm)" END_IF CAPTION fm%,CAPTION$(fm%)+" "+a$+" -": 2D_TARGET_IS fm% FONT_SIZE fm%,7: PRINT_TARGET_IS fm% FOR i = 0 TO we STEP st: ' échelle horizontale 2D_PEN_WIDTH 1 x = ww+i: IF ech% = 2 THEN x = ww+i*ppm y = 15: k = i/100: k1=i/50: IF ech%=2 THEN k = i/10: k1=i/5 IF k1 = INT(k1) THEN y = 10 IF k = INT(k) y = 10: 2D_PEN_WIDTH 2: PRINT_LOCATE x-8,0: PRINT STR$(i) END_IF 2D_LINE x,y,x,ww NEXT i FOR i = 0 TO he STEP st: ' échelle verticale 2D_PEN_WIDTH 1 y = ww+i: IF ech% = 2 THEN y = ww+i*ppm x = 16: k = i/100: k1 = i/50: IF ech% = 2 THEN k = i/10: k1 = i/5 IF k1 = INT(k1) THEN x = 10 IF k = INT(k) x = 14: 2D_PEN_WIDTH 2: PRINT_LOCATE 0,y-6: PRINT STR$(i) END_IF 2D_LINE x,y,ww,y NEXT i END_IF 2D_TARGET_IS p%: PRINT_TARGET_IS p% END_SUB | |
|