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 |
|
|
| Allo ! Les spécialistes des DLL | |
| | Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Allo ! Les spécialistes des DLL Jeu 5 Jan 2023 - 11:49 | |
| Bonjour tout le monde. Ma demande est surtout destinée aux spécialistes des DLL : Jack, Jean_Debort et essentiellement Klaus. Toute autre personne peut contribuer à la discussion. Comme le titre de ma demande n’est pas suffisamment explicite, je m’explique. J’ai créé une dll que j’ai appelée (provisoirement) MaDLL.dll. Cette DLL exporte une fonction Dessine() qui implémente la commande DRAW() de Freebasic. Pour rappel : La commande DRAW est en elle-même un mini langage de dessin, extrêmement rapide. Voici le code source de MaDLL - Code:
-
' compiler comme ceci : ' en ligne de commande : fbc32.exe MaDLL.bas -dll
extern "Windows-MS"
Function Dessine(byref d as string) as integer export Screenres 680,480,32 Color Rgb(0,0,0),Rgb(255,255,255) : Cls Draw d sleep return 0 End Function ' ------------------------------------------------------------------------------
end extern
Voici ce que cette DLL est capable de faire Le dessin est beau, et rapide, mais … Vous avez sans doute remarqué que j’ai utilisé l’écran de freebasic pour afficher le dessin, ce qui n’est point satisfaisant. Ma première question : Comment pouvoir transmettre à MaDLL.dll la cible sur laquelle dessiner, par exemple le handle_canvas d’un picture en panoramic ? Vous avez aussi remarqué que, dans le source de MaDLL, j’ai utilisisé une pause par la commande SLEEP (sinon, l’image disparaitrait sitôt dessinée) Or cette pause (par sleep) ne rend pas la main au programme principal en panoramic, car elle attend l’appui sur une touche. On se trouve devant l’erreur "ne répond pas" Voici comment j’ai contourné cette erreur : Je clique sur l’image pour donner le focus à la fenêtre du dessin. Je tape sur une touche quelconque pour sortir de la pause (sleep). Je clique dans FORM 0 pour lui donner le focus et permettre à panoramic de poursuivre son traitement. Ma deuxième question : Comment éviter toute cette gymnastique ? Vous trouvez sur mon webdav Test_DLL.zip qui contient : MaDLL.bas MaDLL.dll Test.bas | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Allo ! Les spécialistes des DLL Jeu 5 Jan 2023 - 13:21 | |
| C'est téléchargé. Je regarde comment faire ça. Mais au préalable, il faut que je me replonge dans FreeBasic et dans sa commande DRAW que je ne connais pas. A bientôt ... _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Jeu 5 Jan 2023 - 20:43 | |
| Merci Jack pour ta réponse. Prends ton temps, rien ne presse. Voici un extrait de "FreeBASIC Manual" Draw Statement for sequenced pixel plotting Syntax Draw [target,] cmd Parameters target the buffer to draw on cmd a string containing the sequence of commands Description Drawing will take place onto the current work page set via ScreenSet or onto the target Get/Put buffer if specified. The Draw statement can be used to issue several drawing commands all at once; it is useful to quickly draw figures. The command string accepts the following commands: Commands to plot pixels: Command Description Commands to plot pixels: B Optional prefix: move but do not draw. N Optional prefix: draw but do not move. M x,y Move to specified screen location. if a '+' or '-' sign precedes x, movement is relative to current cursor position. x's sign has no effect on the sign of y. U [n] Move n units up. If n is omitted, 1 is assumed. D [n] Move n units down. If n is omitted, 1 is assumed. L [n] Move n units left. If n is omitted, 1 is assumed. R [n] Move n units right. If n is omitted, 1 is assumed. E [n] Move n units up and right. If n is omitted, 1 is assumed. F [n] Move n units down and right. If n is omitted, 1 is assumed. G [n] Move n units down and left. If n is omitted, 1 is assumed. H [n] Move n units up and left. If n is omitted, 1 is assumed. Commands to color: C n Changes current foreground color to n. P p,b PAINTs (flood fills) region of border color b with color p. Commands to scale and rotate: S n Sets the current unit length, default is 4. A unit length of 4 is equal to 1 pixel. A n Rotate n*90 degrees (n ranges 0-3). TA n Rotate n degrees (n ranges 0-359). Extra commands: X p Executes commands at p, where p is a STRING PTR. Example : - Code:
-
Screen 13 'Move to (50,50) without drawing Draw "BM 50,50" 'Set drawing color to 2 (green) Draw "C2" 'Draw a box Draw "R50 D30 L50 U30" 'Move inside the box Draw "BM +1,1" 'Flood fill with color 1 (blue) up to border color 2 Draw "P 1,2" Sleep
| |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Allo ! Les spécialistes des DLL Jeu 5 Jan 2023 - 21:19 | |
| Merci pour les informations. Je vois que la commande DRAW peut dessiner dans une surface graphique (buffer) si on lui passe en premier paramètre l'adresse (target) de cette surface. C'est une première piste. J'arrive à compiler et exécuter ton exemple: il s'affiche un rectangle bleu entouré d'un trait vert: Mais je n'arrive pas à reproduire ton exemple du webdav Test_DLL.zip. Avec ta DLL (MaDLL.dll), l'exécution de Test_5_MaDLL.bas me donne une surface blanche... Pareil si je compile ta DLL (fbc madll.bas -dll). Je pense que nous n'utilisons pas la même version de panoramic, car la fonction ADR a beaucoup été modifiée sur les dernières versions. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Jeu 5 Jan 2023 - 21:56 | |
| J'utilise la dernière version de panoramic, la 0.9.29i11. Je ne pense pas que le problème se situe au niveau de la fonction ADR Note importante : Pour être prise en compte par Panoramic, une DLL doit être complilée en 32 bits et non en 64. Tu as propablement compilé en 64 En ligne de commande, taper : fbc32.exe MaDLL.bas -dllet non fbc madll.bas -dllVoici un autre exemple de l'utilisation de MaDLL.dll - Code:
-
rem ============================================================================ rem Test MaDLL rem ============================================================================ ' D'après Quark ' https://www.freebasic.net/forum/viewtopic.php?f=8&t=22859&hilit=snow&start=165 rem ============================================================================
dim ds$,ts$,ret% dim x,y,resultat dll_on "MaDLL"
read ts$ while ts$ <> "enddata" ds$ = ds$ + ts$ read ts$ end_while ret% = dll_call1("Dessine",adr(ds$)) dll_off
end rem ============================================================================ Data " C4278190080BM0,0M639,0M639,479M0,479M0,0BM1,1M638,1M638,478M1,478M1,1BM2,2M637,2M637,477M2,477M2,2BM3,3M636,3M636,476M3,476M" Data "3,3BM1,226M338,225M353,207M358,206M355,190M389,188M386,203M388,208M391,212M397,199M400,196M441,179M435,182M428,168M420,170M41" Data "8,164M424,148M427,122M437,112M447,112M459,105M470,105M478,103M493,103M500,104M507,108M518,122M522,134M523,150M519,158M509,168" Data "M505,169M506,161M500,166M498,164M493,166M492,161M487,165M485,167M479,163M476,169M471,165M468,167M463,164M461,164M457,163M448," Data "150M450,141M446,129M441,126M439,136M439,144M434,144M437,131M435,123M432,121BM417,161M406,161M396,158M387,155M373,145M369,136M" Data "368,123M374,104M389,93M407,87M427,77M452,69M470,69M498,68M524,70M536,76M554,87M565,99M566,124M562,134M545,152M534,160M520,165" Data "M512,165BM420,80M419,76M423,68M431,63M439,63M445,57M448,57M458,53M461,49M467,49M479,54M485,52M486,51M501,54M509,53M513,56M515" Data ",68BM506,168M504,176M500,177M481,179M467,179M458,177M449,173M440,173M438,181M435,183M442,182M446,184M461,191M465,196M478,197M" Data "495,197M508,190M512,184M512,173M539,179M551,181M554,182M565,189M569,197M573,242M575,257M578,279M579,289M579,300M577,315M573,3" Data "43M570,356M566,370M567,378M569,385M575,397M580,402M584,415M584,434M584,449M584,463M582,476BM572,223BM571,224M637,224BM339,226" Data "M339,228M335,233M334,239M332,245M331,248M334,250M332,254M328,264M324,276M322,292M323,305M328,317M332,323M334,325M339,330M343," Data "338M364,337M387,317M408,286M417,277M429,259M427,284M426,296M421,305M413,310M409,309M407,301M405,294M405,290BM426,268M431,249M" Data "436,229M431,215M420,203M409,195M400,199M393,209BM398,204M380,237M370,251M365,261M356,273M350,286M347,291M341,295BM331,251M337" Data ",249M352,250M361,256M365,258M374,244M370,236M360,232M351,232M342,232M336,237M332,240BM357,220M374,218M381,209M383,209M386,206" Data "M392,214M386,223M385,219BM361,219M355,189M360,187M371,185M380,186M388,187BM379,475M393,449M398,436M398,430M402,411M397,404M39" Data "6,396M396,381M393,360M398,354M400,363M410,372M432,370M455,367M483,360M502,357M519,353M535,350M549,345M547,337M557,282M562,252" Data "M566,234M569,216M569,203BM399,357M401,346M399,332M397,314M397,302M400,345M403,350M415,357M439,355M484,349M489,350M497,345M500" Data ",325M497,343M505,344M519,343M531,341M543,337M548,326BM548,332M565,372M557,382M522,393M497,400M483,403M452,407M430,409M410,407" Data "M397,399M396,396BM522,449M522,458M520,467M512,472M507,476BM393,362M396,366M401,372M404,375M424,376M456,375M486,368M516,362M54" Data "5,356M553,350M551,338BM1,271M325,271BM1,295M322,295BM577,274M636,274BM579,299BM579,295M636,295BM69,226M68,205M71,187M65,192M5" Data "8,186M53,176M54,156M53,155M55,97M68,90M75,86M90,83M91,63M99,53M111,51M126,54M130,59M131,84M130,83M137,82M146,86M149,90M160,89" Data "M170,94M172,101M171,163M160,169M150,164M136,202M132,202M130,192M139,170M129,192M128,197M124,197M118,203M114,199M114,191M124,1" Data "53M113,190M109,196M105,193M107,188M113,170M115,153M118,142M122,131M132,130M145,139M155,144M157,141BM144,138M148,164M154,164BM" Data "150,163M151,175M157,183M160,223M159,225BM77,103M76,155M52,156BM64,167M82,158M84,148M93,148M95,148M91,155M99,155M103,151M109,1" Data "55M109,163M107,166M88,167M82,159BM88,166M69,184M59,188BM93,152M109,138M114,138M118,138BM109,142M114,142M116,143BM111,143M111," Data "138BM357,203M385,203BM89,82M92,88M96,99M104,105M111,105M116,105M127,98M130,89M131,82BM99,87M107,90BM115,89M121,88BM107,96M107" Data ",99M110,101M113,100M114,96BM11,153M27,141M53,142M53,156M11,154M10,168M52,169BM26,142M12,142M11,2M28,2M26,141BM171,154M383,153" Data "BM163,168M417,167BM577,275M637,275BM542,155M630,154M630,166M509,167BM397,388M400,391M405,393M412,393M417,397M426,395M433,397M" Data "442,395M451,399M459,396M467,396M474,390M484,392M489,387M494,387M499,383M510,382M518,378M524,377M530,373M537,374M542,372M550,3" Data "72M553,368M558,369M560,366M553,356BM401,374M400,392BM411,374M411,394BM425,377M425,395BM442,375M443,396BM457,375M459,396BM471," Data "371M473,392BM484,369M487,386M488,387BM497,368M500,382BM512,364M517,380BM526,361M530,373BM538,357M543,373BM547,356M554,368BM55" Data "3,357M552,353BM91,67M93,75M98,79M105,82M115,83M123,79M128,75M130,70BM123,53M129,49M134,45M144,45M154,44M181,44M190,44M201,43M" Data "211,51M220,58M224,63M225,74M226,107M223,123M216,131M212,132M205,128M205,142M253,144M255,146M259,149BM258,148M286,149M291,145M" Data "291,144M307,143M312,148M340,150M344,143M371,143BM554,143M569,144M575,147M604,148M608,143M620,143M631,153M628,154BM204,61M205," Data "65M205,128BM171,142M204,141BM146,44M146,30M148,24M151,19M155,14M159,13M162,12M168,11M175,14M180,18M185,26M185,39M185,42BM20,3" Data "29M110,327M110,432M21,435M20,329BM150,328M241,327M241,433M151,432M150,329BM369,333M370,433M279,432M279,325M337,328BM22,477M20" Data ",454M111,455M111,476BM153,476BM152,477M152,456M239,456M239,477BM280,475M279,456M370,455M370,475BM629,475M629,454M583,454BM575" Data ",324M630,324M630,430M583,430BM253,144M254,106M256,99M261,96M280,95M284,95M289,98M292,143BM260,105M286,104M286,134M260,135M259" Data ",105M258,103BM266,94M266,68M266,66M266,62M280,62M283,64M283,66M280,71M281,93M280,95BM428,168M426,160M424,154M424,148M425,149B" Data "M343,98M333,95M333,71M337,67M328,65M326,64M319,64M317,67M319,70M332,70M320,70M320,95M314,96M310,99M307,106M307,143BM313,103M3" Data "38,104M338,131M314,133M312,103BM343,142M341,99M337,95M333,95BM385,95M384,71M399,69M399,89M398,69M402,69M402,66M397,64M387,64M" Data "383,65M383,67M384,72BM613,143M613,4BM613,143M630,143M630,3BM570,102M574,98M578,96M599,96M602,96M605,100M606,100M607,143BM582," Data "95M582,71M596,71M596,96BM576,110M602,110M602,138M577,138M576,113BM570,143M570,108M571,103M578,101M582,99BM597,67M594,62M583,6" Data "2M581,64M578,65M578,69M583,70BM595,69M598,67M597,64M594,62BM596,69M598,66M596,62M588,62M579,64M579,65M579,67M581,69BM583,63M5" Data "80,63M579,65M578,65M580,68M581,68M579,65M580,63M584,64BM596,70M599,68M599,64M596,62BM422,154M428,122BM433,180M425,165M424,160" Data "M424,152BM35,348M93,348M93,419M33,419M33,349M37,348BM168,349M223,349M223,413M164,413M164,350M171,350BM295,349M351,349M351,416" Data "BM350,415M294,415M294,349BM572,349M613,349M613,415M582,415BM28,35M145,35BM185,35M612,35BM449,432M462,432M470,429M481,426M492," Data "426M495,453M482,465M466,470M450,465M440,429M448,433BM543,417M559,411M569,402M572,400M580,426M572,441M561,447M543,446M534,417M" Data "544,416BM430,423M464,424M481,418M495,413M501,458M486,473M463,479M438,468M427,420BM524,409M538,457M559,463M571,457M582,438M584" Data ",425M574,395BM224,122M254,122BM27,122M53,122BM297,122M306,122BM350,122M367,122BM566,122M569,122BM606,122BM607,123M612,119M610" Data ",85M611,76M606,71M602,70M603,47M606,44M605,42M593,42M587,43M587,45M589,49M603,47M590,50M590,62BM260,95M262,84M265,80BM287,75M" Data "293,76M297,80M297,123M291,127BM280,74M286,75M287,50M290,46M288,43M275,43M272,47M274,48M287,48M274,49M274,62BM315,81M317,77BM3" Data "15,95M315,82M317,76M319,75M320,74BM343,129M351,126M349,80M344,75M339,73M339,49M343,44M341,42M328,43M324,44M325,48M326,49M339," Data "48M327,51M327,62M326,47M339,51BM326,47M339,48M329,50M334,47BM381,98M379,77M382,76BM392,62M392,48M403,49M405,73M410,74M414,74M" Data "417,76M419,77BM392,48M387,45M391,42M404,42M407,46M402,49BM379,82M378,98M376,99M378,97M378,84BM375,101M382,97M378,98M379,90M37" Data "9,96BM437,60M437,48M449,48M450,55M448,55M448,48M452,45M449,43M436,43M435,46M436,48BM511,55M511,49M523,49M523,70BM522,48M526,4" Data "6M521,43M513,43M509,46M511,49BM412,448P4281165000,4278190080BM409,458P4286770175,4278190080BM523,411M544,407M559,402M570,392M" Data "573,391BM427,423M431,423BM403,444P4278860920,4278190080BM438,436P4278860920,4278190080BM435,428P4281165000,4278190080BM533,42" Data "4P4281165000,4278190080BM463,449P4278860920,4278190080BM556,423P4278860920,4278190080BM77,16P4279514935,4278190080BM51,69P428" Data "2681223,4278190080BM239,57P4282681223,4278190080BM416,77M417,82BM327,63M437,62M437,60BM41,57P4285783260,4278190080BM238,70M23" Data "8,70BM239,71P4285783260,4278190080BM361,86P4285783260,4278190080BM581,71M574,77M574,98BM340,89P4294967295,4278190080BM331,55P" Data "4294967295,4278190080BM399,57P4294967295,4278190080BM403,78P4294967295,4278190080BM382,76M385,74BM440,54P4294967295,427819008" Data "0BM360,77P4284138435,4278190080BM416,70P4284138435,4278190080BM365,84P4284138435,4278190080BM249,54P4284138435,4278190080BM57" Data ",53P4284138435,4278190080BM404,73M402,54BM367,84P4284138435,4278190080BM151,44M147,26BM179,43M183,26BM185,43M185,42BM110,68P4" Data "279834905,4278190080BM112,61P4281808695,4278190080BM157,28P4281808695,4278190080BM327,62M303,62M319,32BM483,52M498,36BM367,53" Data "P4280834650,4278190080BM18,37P4284558593,4278190080BM621,68P4284558593,4278190080BM10,142M10,72M11,143M11,69BM28,162P42845585" Data "93,4278190080BM419,167M416,167BM209,161P4284558593,4278190080BM419,160M411,161BM402,123P4288236805,4278190080BM469,57P4294736" Data "132,4278190080BM33,150P4290314168,4278190080BM195,148P4290314168,4278190080BM559,148P4290314168,4278190080BM237,129P429169044" Data "5,4278190080BM34,133P4291690445,4278190080BM297,134P4291690445,4278190080BM354,134P4291690445,4278190080BM567,135P4291690445," Data "4278190080BM31,146P4287755665,4278190080BM190,148P4287755665,4278190080BM564,148P4287755665,4278190080BM20,208P4288430492,427" Data "8190080BM250,197P4288430492,4278190080BM583,189P4288430492,4278190080BM14,207P4284425055,4278190080BM218,200P4284425055,42781" Data "90080BM593,203P4284425055,4278190080BM123,288P4284558593,4278190080BM594,283P4284558593,4278190080BM55,244P4294361996,4278190" Data "080BM590,252P4294361996,4278190080BM8,315P4289341480,4278190080BM594,314P4289341480,4278190080BM171,139M153,140BM151,144M151," Data "107BM167,139M169,141BM87,122P4288716960,4278190080BM74,163M74,154BM59,177P4294967295,4278190080BM71,164M60,163BM96,173P429496" Data "7295,4278190080BM69,187BM58,185M70,187M85,167BM65,189P4294967295,4278190080BM64,189P4294967295,4278190080BM64,188P4294967295," Data "4278190080BM64,188P4294967295,4278190080BM63,188P4294967295,4278190080BM64,189P4294967295,4278190080BM66,189P4294967295,42781" Data "90080BM66,189P4294967295,4278190080BM65,189P4284425055,4278190080BM121,97P4294361996,4278190080BM72,172P4294361996,4278190080" Data "BM93,159P4294361996,4278190080BM164,152P4294361996,4278190080BM438,158BM435,164P4294361996,4278190080BM431,122M430,121BM477,1" Data "30P4284558593,4278190080BM421,162P4284558593,4278190080BM421,158P4294361996,4278190080BM157,59P4291348680,4278190080BM31,337P" Data "4289341480,4278190080BM27,406P4286384136,4278190080BM160,344P4286384136,4278190080BM285,335P4286384136,4278190080BM76,468P428" Data "6384136,4278190080BM186,468M185,468BM192,468P4286384136,4278190080BM321,464P4286384136,4278190080BM606,463P4286384136,4278190" Data "080BM616,425P4286384136,4278190080BM57,393P4281046586,4278190080BM70,397P4279525140,4278190080BM208,385P4279525140,4278190080" Data "BM306,387P4279525140,4278190080BM595,369P4279525140,4278190080BM375,226P4294361996,4278190080BM367,210P4294736132,4278190080B" Data "M495,247P4290541123,4278190080BM372,295P4294935170,4278190080BM354,244P4294935170,4278190080BM415,295P4294935170,4278190080BM" Data "570,312P4294935170,4278190080BM441,362P4286611584,4278190080BM490,394P4286611584,4278190080BM512,177M512,172M510,170M508,170B" Data "M483,189P4281046586,4278190080BM552,354M554,351BM552,361P4281046586,4278190080BM554,362P4281046586,4278190080BM552,359P428104" Data "6586,4278190080BM553,364P4294967295,4278190080BM557,364BM559,365M562,364BM557,357P4294967295,4278190080BM404,382P4288236805,4" Data "278190080BM416,387P4288236805,4278190080BM435,386P4288236805,4278190080BM452,386P4288236805,4278190080BM466,383P4288236805,42" Data "78190080BM481,383P4288236805,4278190080BM493,381P4288236805,4278190080BM522,369P4288236805,4278190080BM535,368P4288236805,427" Data "8190080BM546,366P4288236805,4278190080BM553,361P4288236805,4278190080BM555,355P4288236805,4278190080BM398,375P4288236805,4278" Data "190080BM395,395M418,403M465,402M503,393M536,380M551,377M559,373M563,367BM486,366P4288236805,4278190080BM495,389P4288236805,42" Data "78190080BM398,356M412,365M454,361M521,349M541,343M549,341BM444,358P4294935170,4278190080BM366,196P4291690495,4278190080BM109," Data "155M117,149M109,143M115,150M83,171BM84,170M111,170M111,178M78,179M77,179BM146,178M154,180BM90,178P4281808695,4278190080BM83,1" Data "78P4281808695,4278190080BM93,176P4281808695,4278190080BM149,177P4281808695,4278190080BM254,116M258,116BM285,116M289,116BM280," Data "145P4294736132,4278190080BM84,250P4294967192,4278190080BM70,235P4294967192,4278190080BM592,254P4294967192,4278190080BM96,248P" Data "4293322255,4278190080BM607,247P4293322255,4278190080BM72,254P4287729940,4278190080BM613,240P4287729940,4278190080BM580,405P42" Data "78860920,4278190080BM579,405P4278860920,4278190080BM308,129M313,129BM340,129BM338,129M341,129BM317,137P4289341480,4278190080B" Data "M277,114P4281165000,4278190080BM325,115P4284111374,4278190080BM324,122P4279386386,4278190080BM316,122P4281046586,4278190080BM" Data "569,117M578,117BM602,117M605,117BM573,132P4294466296,4278190080BM584,122P4289341480,4278190080BM576,112M576,115BM578,85P42893" Data "41480,4278190080BM580,102P4289341480,4278190080BM589,102P4289341480,4278190080BM587,107P4294967295,4278190080BM576,112M577,11" Data "0BM578,80P4294967295,4278190080BM288,89P4291690495,4278190080BM278,52P4291690495,4278190080BM261,88P4291690495,4278190080BM34" Data "0,82P4291690495,4278190080BM333,57P4291690495,4278190080BM318,84P4291690495,4278190080BM382,82P4291690495,4278190080BM404,84P" Data "4291690495,4278190080BM394,51P4291690495,4278190080BM444,53P4291690495,4278190080BM517,56P4291690495,4278190080BM596,54P42916" Data "90495,4278190080BM579,85P4291690495,4278190080BM274,76P4289393651,4278190080BM272,101P4289393651,4278190080BM323,83P428939365" Data "1,4278190080BM392,81P4289393651,4278190080BM589,103P4289393651,4278190080BM587,85P4289393651,4278190080BM587,65P4289393651,42" Data "78190080BM389,69P4289393651,4278190080BM322,66P4289393651,4278190080BM265,69M280,69BM340,83P4291690495,4278190080BM316,85P429" Data "1690495,4278190080BM283,84P4291690495,4278190080BM278,57P4291690495,4278190080BM279,46P4291690495,4278190080BM263,87P42916904" Data "95,4278190080BM601,89P4291690495,4278190080BM591,45P4291690495,4278190080BM576,84P4291690495,4278190080BM581,164P4284558593,4" Data "278190080BM583,422M582,412BM583,418M583,414BM577,401M576,397BM444,154M441,154M440,152BM449,149M445,154BM444,147M445,142M442,1" Data "36BM172,122M228,122BM36,129P4279189019,4278190080BM189,129P4279189019,4278190080BM211,125P4279189019,4278190080BM220,131P4279" Data "189019,4278190080BM300,134P4279189019,4278190080BM357,135P4279189019,4278190080BM563,139P4279189019,4278190080BM610,131P42791" Data "89019,4278190080BM31,152P4280187957,4278190080BM190,147P4280187957,4278190080BM562,149P4280187957,4278190080BM18,102P42863242" Data "54,4278190080BM26,166P4286324254,4278190080BM208,163P4286324254,4278190080BM546,163P4286324254,4278190080BM624,117P4286324254" Data ",4278190080BM77,284P4286324254,4278190080BM598,287P4286324254,4278190080BM175,75P4289374890,4278190080BM181,41P4294361996,427" Data "8190080BM148,39P4290421082,4278190080BM181,41P4290421082,4278190080BM436,443P4282141820,4278190080BM531,418P4282141820,427819" Data "0080BM479,186P4294473848,4278190080BM395,267P4284136050,4278190080BM360,243P4284136050,4278190080BM415,294P4284136050,4278190" Data "080BM423,359P4284136050,4278190080BM560,317P4284136050,4278190080BM98,343P4280187957,4278190080BM156,404P4280187957,427819008" Data "0BM308,428P4280187957,4278190080BM623,374P4280187957,4278190080BM602,461P4280187957,4278190080BM304,466P4280187957,4278190080" Data "BM186,469P4280187957,4278190080BM89,467P4280187957,4278190080BM75,395P4290391341,4278190080BM68,380P4286331964,4278190080BM68" Data ",392P4290379776,4278190080BM63,377P4286324254,4278190080BM56,390P4290402906,4278190080BM60,400P4290391341,4278190080BM193,386" Data "P4290391341,4278190080BM324,393P4290391341,4278190080BM586,378P4290391341,4278190080BM130,357P4290402906,4278190080BM127,317P" Data "4290379776,4278190080BM477,260P4290421082,4278190080BM461,61P4290418221,4278190080BM410,100P4286346074,4278190080BM26,198P428" Data "6324324,4278190080BM226,202P4286324324,4278190080BM601,195P4286324324,4278190080BM53,16P4279189054,4278190080BM603,311P429037" Data "9776,4278190080" Data "enddata" rem ============================================================================
Le résultat : | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Jeu 5 Jan 2023 - 22:18 | |
| A toute fin utile, j'ai déposé sur mon webdav fbc32.zip | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Allo ! Les spécialistes des DLL Ven 6 Jan 2023 - 8:34 | |
| Bonjour Papydall, Quelques précisions sur FreeBASIC : 1) Pour passer en mode graphique sans afficher de fenêtre : - Code:
-
screenres 640, 400, 32, 2, -1
Ici image 640x400, 32 bits (RGBA), 2 plans 2) Pour créer l'image en mémoire : - Code:
-
var img = imagecreate(640, 400)
img est un pointeur de type "any ptr" ( récupérable par Panoramic ? ) 3) Pour enregistrer l'image dans un fichier BMP : - Code:
-
bsave "image.bmp", img
PS. Où as-tu trouvé les coordonnées de tes images ? (EDIT : je viens de voir le lien sur le forum FreeBASIC dans le deuxième exemple) | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Allo ! Les spécialistes des DLL Ven 6 Jan 2023 - 10:35 | |
| Syntaxe de la commande DRAW de FreeBASIC (rebaptisée TRACE dans FBCroco) : - Code:
-
L'INSTRUCTION TRACE : UN MINI-LANGAGE GRAPHIQUE
Cette instruction constitue à elle seule un mini-langage de type LOGO. Elle prend pour paramètre une chaîne de caractères composée de commandes graphiques choisies parmi les suivantes :
Préfixes optionnels :
B : déplacer sans tracer N : tracer sans déplacer
Déplacement quelconque :
M x,y : Déplacer vers le point (x,y). Si la valeur de x est précédée du signe + ou -, le mouvement se fait depuis la position courante Déplacement rectiligne de n unités dans une direction prédéfinie (n optionnel, défaut = 1)
U n : vers le haut (up) D n : vers le bas (down) L n : vers la gauche (left) R n : vers la droite (right)
Déplacement oblique à 45° de n unités :
E n : en haut à droite F n : en bas à droite G n : en bas à gauche H n : en haut à gauche
Le schéma suivant résume ces commandes :
- Code:
-
Couleur :
C n : Change la couleur d'avant-plan P p,b : Remplit avec la couleur p la région délimitée par la couleur b Mise à l'échelle et rotation :
S n : Définit l'unité de longueur (défaut n = 4 ; 1 pixel = 4 unités) A n : Rotation de n fois 90 degrés (n : 0..3) TA n : Rotation de n degrés (n : 0..359)
Les constantes numériques, notamment les couleurs, doivent être exprimées sous forme décimale uniquement (pas d'hexadécimal !) ; les variables numériques doivent être intégrées dans la chaîne de caractères à l'aide de la fonction STR ou de l'opérateur & | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Ven 6 Jan 2023 - 16:37 | |
| Bonjour Papydall !
Je sors un peu du sujet, mais y a t'il une possibilité de réaliser ces images en pur Panoramic même si cela est un peu long ? J'aimerai bien voir comment elles se construisent et quel logiciel est utilisé pour les créer à la base (certainement à partir de photos) ?
Ca me rappelle les jeux d'aventure bien des années en arrière comme le mystère de Kikekankoi et quelques autres... Ah nostalgie quand tu nous tiens !!!! | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Allo ! Les spécialistes des DLL Ven 6 Jan 2023 - 18:16 | |
| - Minibug a écrit:
- y a t'il une possibilité de réaliser ces images en pur Panoramic même si cela est un peu long ?
Il y a tout ce qu'il faut en Panoramic pour exploiter un string et construire un dessin (2D_LINE, 2D_POLY_FROM, 2D_POLY_TO, etc) - Minibug a écrit:
- quel logiciel est utilisé pour les créer à la base (certainement à partir de photos) ?
C'est avec un logiciel de vectorisation qui transforme une photo (bitmap) en lignes et arcs de cercle et taches de couleurs (vecteurs). _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Ven 6 Jan 2023 - 22:08 | |
| Merci Jack et avec les infos de jean_debord on a tout ce qu'il faut effectivement ! Et comme on dit, il n'y a plus qu'a.... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Sam 7 Jan 2023 - 1:16 | |
| Merci jean_debord pour les précisions. Merci Minibug pour tes interventions. Merci Jack pour tout ce que tu nous offre gracieusement et gratuitement. - Minibug a écrit:
- Je sors un peu du sujet, mais y a t'il une possibilité de réaliser ces images en pur Panoramic même si cela est un peu long ?
- Jack a écrit:
- Il y a tout ce qu'il faut en Panoramic pour exploiter un string et construire un dessin (2D_LINE, 2D_POLY_FROM, 2D_POLY_TO, etc)
Voici un code en pur Panoramic pour dessiner un bel oiseau. - Code:
-
rem ============================================================================ rem Dessiner un oiseau rem Adaptation par Papydall d’un code en FreeBasic rem ============================================================================ rem REF : https://www.freebasic.net/forum/viewtopic.php?t=22859&hilit=snow rem Auteur : BasicCoder2 rem ============================================================================ rem Le programme origine (en freebasic) utilise pour la couleur la réprésention rem RGBA non reconnu par Panoramic. rem J’ai codé deux procédures : rem couleur(rgb) qui calcule les composantes R,G,B d’une valeur RGB rem couleura(rgba) qui calcule les composantes R,G,B d’une valeur RGBA rem ========================================================================== dim pCount : ' nombre de polygones dim jj : ' nombre de côtés dim fx,fy : ' coordonnées du point de départ du flood dim sx,sy : ' coordonnées du point de départ du tracé dim x1,y1,x2,y2 : ' coordonnées du tracé du segment dim c1,c2 : ' Couleurs RGBA du contour et du remplissage dim i,j : ' compteurs dim r,g,b : ' composantes couleur rem ============================================================================ picture 10 : full_space 10 : 2d_target_is 10 read pCount : ' nombre de polygones for i = 0 to pCount-1 read jj : ' nombre de côtés read fx : read fy : ' coordonnées du point de départ du flood read c1 : read c2 : ' couleur du tracé et du remplissage read sx : read sy : ' coordonnées du point de départ du tracé x1 = sx : y1 = sy for j = 0 to jj-2 read x2 : read y2 : ' coordonnées de la fin du segment couleura(c1) : ' déterminer les composantes r,g,b d'une couleur RGBA 2d_pen_color r,g,b : 2d_line x1,y1, x2,y2 : ' tracer la ligne x1 = x2 : y1 = y2 ' pause 1 : ' pour suivre le tracé. Vous pouvez la mettre en REM next j couleura(c1) : 2d_pen_color r,g,b : 2d_line x1,y1,sx,sy couleura(c2) : 2d_flood fx,fy+2,r,g,b next i end rem ============================================================================ ' Procédure calculant les composantes r,g,b d'une valeur RGB SUB couleur(rgb) r = int(rgb/65536) g = int(mod(rgb,65536)/256) b = int(mod(rgb,256)) END_SUB rem ============================================================================ ' Procédure calculant les composantes r,g,b d'une valeur RGBA SUB couleura(rgba) Couleur(mod(rgba,65536*256)) END_SUB rem ============================================================================ DATA 22 : ' numbre de polygones DATA 20 : ' nombre de côtés DATA 265, 52,4278190080,4285341221 : ' point de départ et couleur RGBA DATA 254, 53, 268, 51, 280, 52, 292, 56, 300, 60, 302, 65, 302, 70, 301, 73, 301, 78, 299, 84, 300, 93, 294, 98, 287, 104, 276, 105, 266, 99, 258, 91, 254, 81, 256, 72, 256, 63, 254, 53 DATA 18 : ' nombre de côtés DATA 254, 84,4278190080,4279964183 DATA 300, 92, 310, 91, 306, 98, 304, 108, 304, 116, 303, 120, 291, 118, 281, 115, 271, 111, 261, 107, 257, 102, 251, 95, 254, 81, 263, 97, 274, 103, 284, 103, 293, 99, 300, 92 DATA 10 : ' nombre de côtés DATA 301, 61,4278190080,4293042610 DATA 300, 60, 313, 63, 325, 70, 331, 74, 318, 76, 313, 74, 308, 73, 304, 68, 302, 64, 300, 60 DATA 14 : ' nombre de côtés DATA 303, 68,4278190080,4284359714 DATA 330, 73, 340, 79, 334, 81, 324, 80, 314, 80, 307, 80, 301, 79, 301, 75, 302, 69, 302, 66, 309, 72, 315, 74, 322, 74, 330, 73 DATA 9 : ' nombre de côtés DATA 302, 80,4278190080,4284757821 DATA 301, 79, 299, 85, 303, 90, 311, 91, 323, 87, 338, 79, 326, 79, 314, 79, 301, 79 DATA 8 : ' nombre de côtés DATA 279, 64,4278190080,4278453258 DATA 268, 69, 280, 63, 285, 64, 290, 69, 286, 74, 277, 76, 271, 72, 268, 69 DATA 15 : ' nombre de côtés DATA 252, 55,4278190080,4289639121 DATA 254, 53, 236, 65, 238, 80, 233, 96, 232, 112, 254, 111, 270, 119, 284, 123, 303, 121, 280, 113, 262, 107, 249, 94, 255, 70, 255, 60, 254, 53 DATA 7 : ' nombre de côtés DATA 234, 68,4278190080,4284509241 DATA 235, 66, 190, 118, 217, 115, 232, 112, 234, 94, 239, 77, 235, 66 DATA 13 : ' nombre de côtés DATA 216, 115,4278190080,4281344028 DATA 190, 118, 151, 175, 126, 223, 113, 250, 94, 295, 92, 308, 123, 270, 178, 211, 212, 179, 226, 171, 234, 153, 219, 114, 190, 118 DATA 15 : ' nombre de côtés DATA 249, 112,4278190080,4294237871 DATA 219, 114, 254, 111, 276, 121, 289, 123, 303, 121, 305, 131, 304, 154, 300, 175, 292, 191, 280, 194, 261, 185, 242, 176, 225, 172, 234, 153, 219, 114 DATA 25 : ' nombre de côtés DATA 225, 172,4278190080,4284638274 DATA 226, 171, 244, 177, 257, 183, 275, 192, 281, 193, 291, 191, 273, 224, 257, 242, 241, 258, 225, 270, 213, 278, 195, 284, 179, 291, 172, 291, 164, 281, 165, 268, 156, 270, 150, 278, 150, 286, 141, 290 DATA 134,259, 145, 247, 186, 202, 212, 178, 226, 171 DATA 13 : ' nombre de côtés DATA 133, 260,4278190080,4278386945 DATA 150, 282, 161, 296, 138, 305, 111, 330, 90, 353, 82, 364, 67, 371, 54, 383, 83, 337, 97, 301, 134, 258, 141, 289, 150, 282 DATA 8 : ' nombre de côtés DATA 161, 269,4278190080,4284569447 DATA 150, 283, 150, 276, 156, 269, 165, 268, 164, 280, 174, 292, 164, 299, 150, 283 DATA 6 : ' nombre de côtés DATA 172, 294,4278190080,4282529422 DATA 173, 293, 179, 303, 171, 310, 164, 308, 163, 298, 173, 293 DATA 28 : ' nombre de côtés DATA 178, 303,4278190080,4283051284 DATA 164, 309, 160, 312, 157, 319, 157, 330, 173, 321, 176, 327, 177, 337, 182, 346, 182, 360, 177, 368, 175, 372, 185, 365, 190, 356, 186, 337, 190, 355, 179, 367, 177, 372, 186, 371, 192, 359, 193, 338 DATA 199, 351, 201, 353, 204, 345, 193, 328, 189, 316, 178, 302, 170, 311, 164, 309 DATA 20 : ' nombre de côtés DATA 209, 279,4278190080,4287461209 DATA 210, 278, 244, 288, 260, 296, 268, 305, 269, 318, 266, 320, 258, 306, 258, 322, 255, 336, 250, 345, 245, 348, 248, 334, 250, 319, 244, 325, 245, 312, 235, 300, 220, 302, 224, 295, 195, 284, 210, 278 DATA 12 : ' nombre de côtés DATA 171, 322,4278190080,4286282374 DATA 157, 328, 122, 346, 92, 363, 61, 386, 21, 413, 76, 415, 132, 375, 183, 349, 178, 338, 177, 329, 172, 321, 157, 328 DATA 10 : ' nombre de côtés DATA 181, 350,4278190080,4282068014 DATA 78, 414, 94, 415, 133, 388, 160, 372, 175, 369, 181, 359, 183, 348, 158, 361, 132, 375, 78, 414 DATA 9 : ' nombre de côtés DATA 231, 300,4278190080,4286933626 DATA 187, 312, 220, 301, 234, 299, 243, 310, 244, 324, 232, 329, 202, 339, 194, 329, 187, 312 DATA 12 : ' nombre de côtés DATA 316, 287,4278190080,4282203216 DATA 256, 294, 319, 286, 356, 287, 399, 294, 415, 300, 414, 321, 367, 311, 325, 312, 298, 313, 267, 319, 269, 305, 256, 294 DATA 13 : ' nombre de côtés DATA 259, 309,4278190080,4281279010 DATA 255, 334, 258, 306, 266, 318, 291, 313, 334, 310, 378, 312, 414, 322, 415, 341, 372, 328, 334, 324, 296, 328, 272, 331, 255, 334 DATA 7 : ' nombre de côtés DATA 243, 324,4278190080,4278912518 DATA 200, 337, 244, 323, 249, 329, 246, 338, 202, 350, 202, 344, 200, 337 rem ============================================================================
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Sam 7 Jan 2023 - 11:58 | |
| Bonjour Papydall et bonjour à tous ! Merci Papydall pour cet excellent exemple. Je comprends mieux le principe. - On crée des polygones avec x cotés - On rempli le polygone d'une couleur avec une couleur de bordure - et on passe au suivant Ce qui serait intéressant c'est d'avoir un outil qui permette cette réalisation à partir d'une image ou photo. Cela semble réalisable en Panoramic. Ca ressemblerai à un logiciel de dessin mais en plus simple.... Cette technique de dessin vectoriel est très intéressante en tout cas. Merci à tous pour vos explications. | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Allo ! Les spécialistes des DLL Mar 10 Jan 2023 - 9:26 | |
| Papydall, au risque de te décevoir, dans l'état actuel de Panoramic, il n'y a pas de solution simple pour que la commande draw de Freebasic puisse s'exécuter sur un objet Panoramic (Picture, Button_Picture, Form ?) à partir d'une DLL. En me documentant sur cette commande draw, je me suis aperçu qu'elle existait dans la plupart des basics: FreeBasic, QuickBasic, QB64, GFABasic, TurboBasic, GWBasic, ... Alors, je me suis dit : il faut une commande de ce type pour Panoramic. Et je suis en train de coder la commande 2D_DRAW qui aura une syntaxe similaire. Je n'ai pas encore codé les couleurs, mais voici un aperçu de ce que cela donnera: J'ai utilisé les DATA de ton exemple, mais pour qu'on y voit quelque chose, j'ai multiplié les coordonnées par 5, ce qui est une bonne nouvelle, car dans l'avenir, avec 2D_DRAW, on pourra dessiner des dessins avec une grande finesse, de manière beaucoup plus fine qu'avec les autres Basics. A bientôt ... _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Mar 10 Jan 2023 - 12:18 | |
| En voilà une bonne idée Jack ! J'ai hâte de tester cette nouvelle version... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Mar 10 Jan 2023 - 15:30 | |
| | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Sam 11 Nov 2023 - 2:33 | |
| Salut tout le monde J’ai trouvé la solution à ma deuxième question posée dans mon 1er message de ce topic concernant l’erreur « ne répond pas ». J’ai modifié le code de MaDLL et je l’ai renommée tout simplement Draw.dll Cette dll exporte une seule fonction drawX (respectez la casse) L’appel à partir de Panoramic se fait comme suit : - Code:
-
ret% = dll_call1("drawX",adr(d$))
D$ est la chaine de caractères qui contient la séquence de commandes. Vous pouvez télécharger Draw.zip sur mon webdav. Le zip contient : Draw.dll Demo_Draw.bas Demo_Draw.exe La sortie du programme se fait tout simplement par la croix rouge. . | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Allo ! Les spécialistes des DLL Sam 11 Nov 2023 - 7:49 | |
| Merci papydall !
Effectivement, cela marche très bien.
Peut-on avoir le code de la DLL ? | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Allo ! Les spécialistes des DLL Sam 11 Nov 2023 - 9:12 | |
| Tu peux essayer d'insérer la fenetre freebasic dans un form panoramic, voir ce sujetSinon, pourquoi tu ne reproduis pas la commande "draw" en pur panoramic? | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Allo ! Les spécialistes des DLL Sam 11 Nov 2023 - 14:03 | |
| Voici le code source de Draw.dll - Code:
-
' Draw.bas ' compiler comme ceci : ' en ligne de commande : fbc32.exe Draw.bas -dll
extern "Windows-MS"
' ------------------------------------------------------------------------------ Function drawX(byref d as string) as integer export Screenres 680,480,32 Color Rgb(0,0,0),Rgb(255,255,255) : Cls Draw d while inkey <> "" : wend return 0 End Function ' ------------------------------------------------------------------------------ end extern ' ------------------------------------------------------------------------------
| |
| | | Contenu sponsorisé
| Sujet: Re: Allo ! Les spécialistes des DLL | |
| |
| | | | Allo ! Les spécialistes des DLL | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |