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 |
|
|
| Sauvegarde SCENE2D | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Sauvegarde SCENE2D Dim 21 Fév 2016 - 19:52 | |
| Je sais charger une image bmp dans un Scene2d, je sais charger une image bmp dans un Sprite (Sprite_File_Load), puis positionner celui-ci dans le Scene2d. Mais je ne sais pas sauvegarder le résultat (Scene2d + Sprite inclus) dans un fichier image bmp... On ne peut pas faire de 2d_Target sur un Scene2d, donc on ne peut pas le copier dans un IMAGE, ce qui résoudrait le problème.
Est-ce possible ? | |
| | | Invité Invité
| Sujet: Re: Sauvegarde SCENE2D Dim 21 Fév 2016 - 20:13 | |
| Je répond brièvement car je ne suis plus sûre de la solution, et j'ai eu ce problème, et je sais que j'y suis arrivé. Comme je ne sais plus de quel programme que c'étais (j'ai des tas de programmes teste que je dois faire avant de les assembler), mais il me semble que c'est en mettant le focus sur la fenêtre de scene2D et avec les fonctions images.
Vois si c'est le cas. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Sauvegarde SCENE2D Dim 21 Fév 2016 - 20:48 | |
| Merci cosmos, malheureusement ça ne m'aide pas beaucoup. Le Command_Target n'est pas admis pour un objet Scene2d. Ca ne marche pas si le Scene2d est créé sur un Form différent du Form 0, on ne peut pas récupérer l'image dans un IMAGE. Je peux le faire sur Form 0, mais je voulais le faire de manière invisible.
Mon but était d'incruster un texte sur une image, avec fond du texte transparent. Je le fais actuellement, mais pixel par pixel, ce qui peut être très long. Mon idée était de charger l'image dans un Scene2d, d'écrire le texte sous forme de Sprite (avec contour noir pur), d'insérer le Sprite dans le Scene2d à l'endroit voulu, puis de sauvegarder le tout sous forme d'image bmp. On peut le faire facilement sur le Form 0, de façon visible, à condition que l'image tienne dans les limites de l'écran (et après on sauvegarde le tout en passant par un 'Image'), mais pas de façon virtuelle avec un Scene2d caché et pour une image de n'importe quelle dimension.
Je sais, il y a une dll de KGF.dll qui fait ça très bien, mais je voulais le faire en Panoramic pur. Tant pis, je me contenterai du pixel par pixel. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sauvegarde SCENE2D Lun 22 Fév 2016 - 2:35 | |
| Je viens de mettre une nouvelle version de KGF.dll en ligne. Elle apporte une nouvelle fonction - Code:
-
res% = dll_call2("TakeObjectScreenshot",handle(obj%),adr(fic$)) avec obj% étant le numéro d'objet pour lequel on fait une capture, et fic$ est le chemin et le nom d'un fichier bmp. Si ce deuxième paramètre est passé comme 0 (zéro), la capture sera placée dans le presse-papier. On l'utilise de la manière suivante: - Code:
-
' test_TakeObjectScreenshot.bas
dim res%, fic$ width 0,800 left 0,250 : top 0,20 alpha 11 : top 11,80 : left 11,50 : caption 11,"Scene2d original:" scene2d 1 : width 1,300 : height 1,200 left 1,50 : top 1,100 color 1,255,0,0 button 2 : top 2,140 : left 2,80 alpha 12 : top 12,80 : left 12,360 : caption 12,"Picture avec une copie:" picture 3 : width 3,300 : height 3,200 left 3,360 : top 3,100 display
dll_on "KGF.dll"
res% = dll_call2("TakeObjectScreenshot",handle(1),0) clipboard_paste 3
' ou: ' fic$ = "MonFichierBmp.bmp" ' res% = dll_call2("TestKGF",handle(1),adr(fic$)) ' file_load 3,fic$
end
Je ferai la doc demain, mais la DLL est à jour sur les sites et le WebDav. Ainsi, tu peux faire une capture d'un Scene2d. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Sauvegarde SCENE2D Lun 22 Fév 2016 - 6:51 | |
| et voila, encore un ajout d'une fonction bien pratique dans KGF | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Sauvegarde SCENE2D Lun 22 Fév 2016 - 10:24 | |
| 2d_image_copy ne marche pas? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sauvegarde SCENE2D Lun 22 Fév 2016 - 10:38 | |
| Non. Essaie... La commande 2D_IMAGE_COPY copie l'image de l'objet qui est actuellement 2D_TARGET, pour la déposer dans un objet IMAGE. Or, un objet SCENE2D ne peut pas être 2D_TARGET... C'est vrai que le nom de la commande peut induire en erreur. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sauvegarde SCENE2D Lun 22 Fév 2016 - 10:53 | |
| J'ai mis la doc à jour, et j'ai fait un petit ajout dans la DLL: c'est la fonction TakeObjectScreenshotEx. Elle fonctionne comme TakeObjectScreenshot, mais permet de spécifier un rectangle d'extraction (clipping rectangle) dans l'objet, dont l'image est à copier. Pour prendre une photo d'un sprite, par exemple... Voici la petite démo: - Code:
-
' test_TakeObjectScreenshot.bas
dim res%, fic$ width 0,800 : height 0,600 left 0,250 : top 0,20 alpha 11 : top 11,80 : left 11,50 : caption 11,"Scene2d original:" scene2d 1 : width 1,300 : height 1,200 left 1,50 : top 1,100 color 1,255,0,0 button 2 : top 2,140 : left 2,80 : caption 2,"Mon bouton" alpha 12 : top 12,80 : left 12,360 : caption 12,"Picture avec une copie:" picture 3 : width 3,300 : height 3,200 left 3,360 : top 3,100 alpha 13 : top 13,320 : left 13,360 : caption 13,"Picture avec un extrait:" picture 4 : width 4,100 : height 4,60 left 4,360 : top 4,340 display
dll_on "KGF.dll"
' prendre la photo du scene2d entier: res% = dll_call2("TakeObjectScreenshot",handle(1),0) clipboard_paste 3 ' prendre la photo d'un extrait du scene2d: res% = dll_call6("TakeObjectScreenshotEx",handle(1),0,70,20,100,60) clipboard_paste 4
' ou: ' fic$ = "MonFichierBmp.bmp" ' res% = dll_call2("TestKGF",handle(1),adr(fic$)) ' file_load 3,fic$
end
| |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Sauvegarde SCENE2D Lun 22 Fév 2016 - 11:20 | |
| C'est curieux, mais ça marche très bien chez moi - Code:
-
' test_TakeObjectScreenshot.bas
dim res%, fic$ width 0,800 left 0,250 : top 0,20 alpha 11 : top 11,80 : left 11,50 : caption 11,"Scene2d original:" scene2d 1 : width 1,300 : height 1,200 left 1,50 : top 1,100 color 1,255,0,0 button 2 : top 2,140 : left 2,80 alpha 12 : top 12,80 : left 12,360 : caption 12,"Picture avec une copie:" picture 3 : width 3,300 : height 3,200 left 3,360 : top 3,100
2d_target_is 0 image 10 2d_image_copy 10,left(1),top(1),left(1)+width(1),top(1)+height(1) 2d_target_is 3 2d_image_paste 10,0,0
display
' dll_on "KGF.dll" ' res% = dll_call2("TakeObjectScreenshot",handle(1),0) ' clipboard_paste 3
' ou: ' fic$ = "MonFichierBmp.bmp" ' res% = dll_call2("TestKGF",handle(1),adr(fic$)) ' file_load 3,fic$
end
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sauvegarde SCENE2D Lun 22 Fév 2016 - 13:25 | |
| Certes, si tu le fais comme ça... mais tu utilises la form 0 comme 2D_TARGET, et tu sélectionnes le rectangle qui correspond au SCENE_2D. Astucieux. Mais ce n'était pas tout à fait le but de ma fonction: elle travaile directement sur l'objet vise. Et ceci même si l'objet vise est dans un autre programme, même non Panoramic ! | |
| | | Contenu sponsorisé
| Sujet: Re: Sauvegarde SCENE2D | |
| |
| | | | Sauvegarde SCENE2D | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |