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 |
|
|
| Nouvelle DLL pour faire une copie d'écran | |
| | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Nouvelle DLL pour faire une copie d'écran Jeu 21 Juin 2012 - 1:40 | |
| J'ai faut une nouvelle DLL : PrintScreen.dll. Elle exporte une seule fonction: i% = dll_call1("ScreenCopy",x%)Le paramètre x% donne le mode opératoire: 0 = tout l'écran 1 = la form active Tout sera copié dans le presse-papier sous forme d'image. De là, on peut le récupérer dans un picture un dans un image par CLIPBOARD_PASTE, puis sauvegarder sur disque par FILE_SAVE dans un fichier JPG ! C'est sur mon WebDav: Site: http://www.mydrive.ch/Identifiant: panoramic@klausgunther Mot de passe: panoramic123 Dossier DLLs | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Jeu 21 Juin 2012 - 1:45 | |
| Cool ! Ça manquait cette fonction !! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Jeu 21 Juin 2012 - 8:37 | |
| Merci, heu, tu crois que tu pourrais faire aussi un image_add qui gère une couleur de transparence (voir 2 par option, le noir et le rose pur ?). Cette fonction aurait pour but de copier vers une image en ajoutant une image par au dessus sans remplacer les pixels si l'image ajoutée sont de la couleur sus citée. Après je te laisse voir comme tu préfère pour le retour du résultat | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Jeu 21 Juin 2012 - 9:24 | |
| Couleur de transparence ? Je ne vois pas comment gérer cela dans le presse-papier, dans lequel ma fonction copie l'image de l'écran.
EDIT
Info supplémentaire: Les formats JPG et BMP ne gèrent pas la notion de couleur de transparence. C'est possible avec GIF et PNG, mais Panoramic ne les gère pas...
Conclusion: Seule solution pour "simuler" une transparence, c'est: 1. définir arbitrairement une couleur RGB comme couleur transparente 2. charger l'image cible dans un picture 3. charger l'image à incruster dans un picture caché par HIDE 4. copier pixel par pixel la seconde image dans la première, à l'exception des pixels de la couleur choisie
Désolé. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Jeu 21 Juin 2012 - 10:23 | |
| Woui, mais c'est rapidement trop long. Mais bon, tant pis, on fera avec ... Merci Klaus.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Dim 24 Juin 2012 - 16:19 | |
| Mise à jour: La dll PrintScreen.dll contient maintenant les fonctions suivantes: - Code:
-
i% = dll_call1("ScreenCopy",x%) : ' x%=0--> tout l'écran x%=1--> la fenêtre active i% = dll_call0("Rotate90") : ' rotation de l'image interne de 90 degrés i% = dll_call0("RotateM90") : ' rotation de l'image interne de -90 degrés i% = dll_call0("Rotate180") : ' rotation de l'image interne de 180 degrés i% = dll_call0("LoadPicture") : ' charger l'image du presse-papier dans l'image interne i% = dll_call0("SavePicture") : recopier l'image interne dans le presse-papier i% = dll_call6("ModifyPicture,x%,y%,T%,R%,G%,B%) : incruster l'image du presse-papier dans l'image interne ' à partir de (x%,y%) avec la couleur de transparence R%,G%,B% ' T% est le taux de transparence de l'image dans le presse-papier (0-100) i% = dll_call2("ResizePicture,h%,w%) : redimensionner l'image du presse-papier à largeur w%, hauteur h% ' comme s'il y avait un STRETCH_ON sur le presse-papier i% = dll_call0("GetPictureHeight") : ' retourner la hauteur de l'image interne i% = dll_call0("GetPictureWidth") : ' retourner la largeur de l'image interne i% = dll_call0("GetClipboardPictureWidth") : ' retourner la largeureur de l'image dans le presse-papier i% = dll_call0("GetClipboardPictureHeight") : ' retourner la hauteur de l'image dans le presse-papier i% = dll_call3("SetPictureFilter",R%,G%,W%) : ' appliquer des filtres couleur sur l'image interne ' une valeur de -1 signifie "inchangé" i% = dll_call0("SetPictureGrayScale") : ' transformer une image en niveaux de gris i% = dll_call1("SetPictureBrightness",d%) : ' ajuster la brillance de + ou - d% (-255...+255) i% = dll_call1("SetPictureGamma",g%) : ' ajuster le Gamma 0:plus foncé <>0:plus clair i% = dll_call4("CreatePictureGradientColor",adr(start$,adr(adresse$),adr(couleur_debut$),adr(couleur_fin$)) ' remplir l'image interne par un dégradé entre les couleurs début et fin ' start$ donne le type de dégradé: ' L[ine] = dégradé par lignes C[olonne] = dégradé en colonnes ' P[oint] = dégradé à partir d'un point R[onds] = dégradé en ronds (cercle) autour d'un point ' B[ulles] = bulles dégradées autour d'un point ' adresse$ = numéro de départ (ligne, colonne ou coordonnées x,y d'un point) ' couleur_debut$, couleur_fin$ = valeurs R,G,B de la couleur i% = dll_call1("SetImmediateMode",m%) : ' si m%>0: mettre systématiquement le presse-papier à jour
L'image interne est une image non visible résidant dans la DLL et gérée exclusivement par la DLL. Toutes les fonctions travaillant avec l'image interne doivent être précédées d'un appel à LoadImage et suivis d'un appel à SaveImage. Note: Dommage: la balise code ne semble plus marcher ! Je en sais pas pourquoi.
Dernière édition par Klaus le Jeu 28 Juin 2012 - 23:16, édité 11 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Lun 25 Juin 2012 - 10:17 | |
| Hum, il va falloir te challenger ... Une copie d'image avec comme masque de transprence la luminosité de la seconde image peut-être comme l'avait demandé Mini-fly il y a quelques temps ? En tout cas, cette DLL est géniale (une fois de plus ) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Lun 25 Juin 2012 - 11:23 | |
| Je suis en train de réfléchir à des effets plus sophistiqués: - translucidité de x% pour la partie non-tranparente d'une image incrustée - griser une image etc. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Lun 25 Juin 2012 - 11:57 | |
| Wouahou .. moi qui pensais te mettre un petit défit sympa, je suis carrément en dessous au niveau exigence Bonne chance Klaus | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mar 26 Juin 2012 - 2:15 | |
| Suite à un crash, j'avais perdu l'ensemble des sources de ma DLL ! Mais ça y est - j'ai tout réécrit à partir de zéro !
Et j'ai affiné la partie incrustation par la fonction ModifyPicture: si l'on précise des coordonnées d'insertion telles que l'image à insérer dépasserait l'image réceptrice à droite et/ou en bas, l'image à insérer sera simplement tronquée et on ne verra que la partie comprise dans l'image réceptrice.
Maintenant, je vais pouvoir attaquer les effets plus intéressants sur des bitmaps: - transparence partielle pour les parties non transparentes d'une image à incruster - filtres rouge/vert/bleu/nuances de gris - augmenter/diminuer la luminosité et bien d'autres encore.
Je commence à gérer correctement les SCANLINE avec le format 24 bit des bitmaps, et ça ouvre de tout nouveaux horizons... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mar 26 Juin 2012 - 14:52 | |
| Et la suite: J'ai modifié ma fonction ModifyPicture en ajoutant un paramètre. Maintenant, c'est: - Code:
-
i% = dll_call6("ModifyPicture,x%,y%,T%,R%,G%,B%) : incruster l'image du presse-papier dans l'image interne ' à partir de (x%,y%) avec la couleur de transparence R%,G%,B% ' T% est le taux de transparence de l'image dans le presse-papier (0-100)
Le paramètre ajouté T% donne le taux de transparence de la partie non-transparente de l'image contenue dans le presse-papier, pour l'incrustation dans l'image interne. Ce taux peut varier de 0 (totalement transparent) à 100 (totalement opaque). On peut utiliser cette fonction maintenant pour inscrire un filigrane sur une photo ou un document, avec taux 20 %, par exemple. Voici un exemple: On voit les 3 réglages de transparence pour les 3 vignettes possibles dans le programme incruster.bas, dont voici le source modifié: - Code:
-
' incruster.bas label labels : gosub labels gosub constantes gosub variables gosub form0 gosub menu gosub GUI gosub initialisations
end
labels: label constantes, variables, form0, menu, GUI, initialisations label load_p0, load_p1, load_p2, load_p3, selpicx, load, clickpic label save_p0 return constantes: dim dll$ : dll$ = "PrintScreen.dll" dim rep$ : rep$ = "c:\DOCUME~1\klaus\MESDOC~1\MESPRO~2\INFOBU~1\" return
variables: dim no%, no1%, n%, f$, tcR%, tcG%, tcB%, x%, y%, xp%, yp% dim pic_w%, pic_h%, pic_x_w%, pic_x_h% dim no_tp1%, no_tp2%, no_tp3%, taux% dim no_pic%, no_vert%, no_hor% dim no_pic1%, no_pic2%, no_pic3% dim no_open%, no_save% dim sel_pic%, sel_pic_x%, sel_pic_y% return
form0: full_space 0 caption 0,"Incruster des vignettes dans une image" return
menu: return
GUI: no% = no% + 1 : open_dialog no% : no_open% = no% filter no%,"Fichier image|*.jpg;*.bmp" no% = no% + 1 : save_dialog no% : no_save% = no% filter no%,"Fichier image|*.bmp"
no% = no% + 1 : picture no% : no_pic% = no% top no%,40 : left no%,40 : on_click no%,clickpic width no%,900 : height no%,600 : stretch_on no% no% = no% + 1 : button no% : caption no%,"..." top no%,660 : left no%,40 : width no%,40 : on_click no%,load_p0 no% = no% + 1 : button no% : caption no%,"Sauver" top no%,660 : left no%,100 : width no%,40 : on_click no%,save_p0
no% = no% + 1 : picture no% : no_pic1% = no% top no%,40 : left no%,960 : on_click no%,selpicx width no%,200 : height no%,200 : stretch_on no% color no%,255,127,127 no% = no% + 1 : picture no% : no_pic2% = no% top no%,250 : left no%,960 : on_click no%,selpicx width no%,200 : height no%,200 : stretch_on no% color no%,127,255,127 no% = no% + 1 : picture no% : no_pic3% = no% top no%,460 : left no%,960 : on_click no%,selpicx width no%,200 : height no%,200 : stretch_on no% color no%,127,127,255
no% = no% + 1 : button no% : caption no%,"..." top no%,40 : left no%,1170 : width no%,40 : on_click no%,load_p1 no% = no% + 1 : button no% : caption no%,"..." top no%,250 : left no%,1170 : width no%,40 : on_click no%,load_p2 no% = no% + 1 : button no% : caption no%,"..." top no%,460 : left no%,1170 : width no%,40 : on_click no%,load_p3 no% = no% + 1 : scroll_bar no% : no_tp1% = no% : vertical no% top no%,70 : left no%,1180 : min no%,0 : max no%,100 position no%,100 : height no%,170 no% = no% + 1 : scroll_bar no% : no_tp2% = no% : vertical no% top no%,280 : left no%,1180 : min no%,0 : max no%,100 position no%,100 : height no%,170 no% = no% + 1 : scroll_bar no% : no_tp3% = no% : vertical no% top no%,490 : left no%,1180 : min no%,0 : max no%,100 position no%,100 : height no%,170
return
initialisations: dll_on rep$+dll$ taux% = 100 return
load_p0: n% = no_pic% gosub load return
load_p1: n% = no_pic1% gosub load return
load_p2: n% = no_pic2% gosub load return
load_p3: n% = no_pic3% gosub load return load: f$ = file_name$(no_open%) if f$<>"_" then file_load n%,f$ return
save_p0: f$ = file_name$(no_save%) if f$="_" then return if lower$(right$(f$,4))<>".bmp" then f$ = f$ + ".bmp" file_save no_pic%,f$ return selpicx: sel_pic% = number_click taux% = position(no_tp1%+number_click-no_pic1%) clipboard_copy sel_pic% pic_x_w% = dll_call0("GetClipboardPictureWidth") pic_x_h% = dll_call0("GetClipboardPictureHeight") xp% = mouse_x_left_down(sel_pic%)*pic_x_w%/width(sel_pic%) yp% = mouse_y_left_down(sel_pic%)*pic_x_h%/height(sel_pic%) return clickpic: tcR% = color_pixel_red(sel_pic%,0,height(sel_pic%)-1) tcG% = color_pixel_green(sel_pic%,0,height(sel_pic%)-1) tcB% = color_pixel_blue(sel_pic%,0,height(sel_pic%)-1) ' ici, incruster cette image clipboard_copy no_pic% pause 300 n% = dll_call0("LoadPicture") pic_w% = dll_call0("GetPictureWidth") pic_h% = dll_call0("GetPictureHeight") clipboard_copy sel_pic% pause 300 x% = mouse_x_left_down(no_pic%)*pic_w%/width(no_pic%) - xp% y% = mouse_y_left_down(no_pic%)*pic_h%/height(no_pic%) - yp%
n% = dll_call6("ModifyPicture",x%,y%,taux%,tcR%,tcG%,tcB%) n% = dll_call0("SavePicture") pause 300 clipboard_paste no_pic% return
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mar 26 Juin 2012 - 16:02 | |
| Juste un mot: nickel Super pratique. je pense que cette DLL servira souvent ... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mar 26 Juin 2012 - 17:43 | |
| Merci ! Nouvelle version avec une nouvelle fonction: - Code:
-
i% = dll_call3("SetPictureFilter",R%,G%,W%) : ' appliquer des filtres couleur sur l'image interne ' une valeur de -1 signifie "inchangé"
Cette fonction permet de jouer avec les effets couleur, simultanément sur les 3 couleurs. Exemple: - Code:
-
dim M1% : M1% = 0-1 i% = dll_call3("SetPictureFilter",M1%,255,255)
applique un filtre JAUNE - Code:
-
dim M1% : M1% = 0-1 i% = dll_call3("SetPictureFilter",M1%,0,0)
applique un filtre ROUGE etc. Dans un de mes posts ci-dessus, il y a la liste des fonctions. Elle a été mise à jour. Et une autre nouvelle fonction, pour transformer l'image couleur interne en noir et blanc: - Code:
-
i% = dll_call0("SetPictureGrayScale") : ' transformer une image en niveaux de gris
simple et efficace. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mer 27 Juin 2012 - 0:45 | |
| Hum Klaus, avant de me coucher, je voulais juste te dire qu'il me semble qu'une fonction principale dans ta DLL pour qu'elle soit complete: la rotation de la copie de x degrès. Qu'en penses-tu ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mer 27 Juin 2012 - 0:56 | |
| J'y ai pensé. J'ai fait la rotation de +90, +180 et -90 degrés. Mais comment faire une rotation de 23 degrés ? Panoramic ne pourra pas afficher un picture de cette orientation. Alors, faire la rotation de la bitmap "sous" le cadre rectangulaire ? Avec des zones blanches qui apparaissent en des données qui se perdent ? je ne suis pas sûr que ce serait très utile. Ah, si Panoramic pouvait orienter un picture de x degrés... Ou alors, il faudrait inscrire le picture tourné dans un rectangle aux bords horizontaux/verticaux, et obligatoirement provoquer une réduction de la partie utile le l'image pour qu'elle tienne entièrement dans le cadre du picture ? Ca, ce serait possible, et je pourrais faire cette fonction... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mer 27 Juin 2012 - 1:43 | |
| Nouvelle version. Ajout de la fonction - Code:
-
i% = dll_call1("SetPictureBrightness",d%) : ' ajuster la brillancede +/- d% (-255...+255)
Cela gère la brillance d'une image. Une valeur positive augmente la brillance, une valeur négative diminue la brillance.Des appels successifs intensifient l'effet. Mais attention: tout comme avec SetPictureFilter et SetPictureGrayScale, cette fonction n'est pas réversible dans tous les cas ! Elle s'exécutera, sans erreur, mais certaines couleurs ne reviendront pas à la couleur initiale. Exemple: si pour un pixel, on a (254,112,223) et on applique SetPictureBrightness avec d%=10, on obtient (255,122,233). Si on applique maintenant d%=0-10, on obtient (245,112n=,223). La nuance de rouge n'est plus la même. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mer 27 Juin 2012 - 10:34 | |
| Nouvelle version: Ajout de la fonction: - Code:
-
i% = dll_call1("SetPictureGamma",g%) : ' ajuster le Gamma 0:plus foncé <>0:plus clair
Cette fonction gère le Gamma d'une image. 0 chaque étape, on applique un coefficient Gamme de 1.1. Ce n'est pas un coefficient linéaire, mais exponentiel. La fonction est: couleur nouvelle = power(couleur ancienne,coefficient) Si le paramètre g%=0, le coefficient devient 1/1.1, sinon le coefficient devient 1.1. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mer 27 Juin 2012 - 23:07 | |
| Nouvelle version. Nouvelle fonction: - Code:
-
i% = dll_call4("CreatePictureGradientColor",adr(start$,adr(adresse$),adr(couleur_debut$),adr(couleur_fin$)) ' remplir l'image interne par un dégradé entre les couleurs début et fin ' start$ donne le type de dégradé: ' L[ine] = dégradé par lignes C[olonne] = dégradé en colonnes ' P[oint] = dégradé à partir d'un point ' adresse$ = numéro de départ (ligne, colonne ou coordonnées x,y d'un point) ' couleur_debut$, couleur_fin$ = valeurs R,G,B de la couleur
Cette fonction remplit l'image interne par un dégradé de couleurs, entre deux couleurs RGB à choisir librement. Le dégradé peut se faire de 3 manières: - par ligne ce qui correspond à un dégradé vertical, la couleur de début étant en haut et la couleur de fin en bas - par colonnes ce qui correspond à un dégradé horizontal, la couleur de début étant à gauche et la couleur de fin à droite - par point ce qui correspond à un dégradé à partir d'un point de départ vers les extérieurs, la couleur de début étant sur le point ciblé, et la couleur de fin formant le bord extérieur. Tous les paramètres se donnent sous forme de chaînes de caractères. Il ne faut donc pas oublier de les mettre dans des variables et de les passer par adr(xxx$) pour que ça marche. Le premier paramètre donne le type de dégradé. Seul le premier caractère est requis, le reste est optionnel, et le tout est insensible à la casse. Le second paramètre donne, sous forme de chaîne de caractères, le ligne de départ, la colonne de départ ou les coordonnées du point de départ, en format x,y. Les deux derniers paramètres donnent les deux couleurs, en format r,g,b. Exemple: dim t$,s$,c1$,c2$ t$ = "P" s$ = "250,350" c1$ = "240,237,23" c2$ = "16,46,216" i% = dll_call4("CreatePictureGradientColor",adr(t$),adr(s$),adr(c1$),adr(c2$)) Cela donne ceci: Et voici un dégradé par ligne: t$ = "L" s$ = "250" c1$ = "240,237,23" c2$ = "16,46,216" Cela donne ceci: En enfin un dégradé par colonne: t$ = "C" s$ = "350" c1$ = "240,237,23" c2$ = "16,46,216" Cela donne ceci: | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mer 27 Juin 2012 - 23:12 | |
| !tu as encore beaucoup de bonnes idées du genre en réserve ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mer 27 Juin 2012 - 23:20 | |
| Oh oui ! Il y aura d'autres surprises à venir !
Que penses-tu du dégradé ? En choisissant judicieusement les couleurs (et non comme moi, comme une brute, pour les exemples postés), on peut faire' de jolis fonds de page, pour du papier à lettres ou des albums photos, et incruster dessus des filigranes, des clip-art et des photos... la chaîne de traitement d'images commence à prendre forme ! | |
| | | Invité Invité
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Mer 27 Juin 2012 - 23:53 | |
| Bonsoir Klaus. Il me semble que l'autre fois (ma mémoire me fait défaut) qu'un des dossiers sur ce site, a un gros volume en mémoire. Mais avant de télécharger, combien de MB il faut pour télécharger, pour savoir sur quoi le mettre, moi qui n'est plus de mémoire. En fait pour Dlls combien il faut? Désolé pour ce genre de question. (J'ai l'impression d'être dans la préhistoire) @+ |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Jeu 28 Juin 2012 - 0:07 | |
| Voici la place que mes DLLs prennent sur disque (c'est le dossier DLL de mon WebDav): C'est l'info dont tu as besoin ? Maintenant, tout dépend de quelle DLL tu as besoin. En principe, elles sont toutes indépendantes. Aucune DLL n'en appelle une autre (sauf DynamicallyLoadDLL, mais elle est faite pour ça). | |
| | | Invité Invité
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Jeu 28 Juin 2012 - 7:07 | |
| Merci bien. J'ai téléchargé ta dll. C'est pas possible, je me suis encore endormi devant quelques lignes de code. Je crois que je vais faire un nettoyage, et envoyer mon programme comme cela. Je voulais pouvoir incorporer un look, et quelques autres améliorations, mais je n'arrive pas à programmer. Cette dll, je pensais quelle pouvais faire un fond d'écran progressif, mais bon. Mon programme fonctionne très bien ainsi. Ce sera une première version, et si veut intéresser, je reprendrai plus tard pour apporter des trucs en plus. Vous en avez de la chance de pouvoir programmer. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Jeu 28 Juin 2012 - 9:11 | |
| Voici un petit programme qui permet d'utiliser cette fonction pour produire un fichier BMP servant de fonc d'écran. - Code:
-
' Fond écran pour Cosmos70.bas
label sortir
dim rep$ : rep$ = "c:\DOCUME~1\klaus\MESDOC~1\MESPRO~3\PRINTS~1\" dim i% dim sta$, adresse$, c0$, c1$
full_space 0 dll_on rep$+"PrintScreen.dll"
' créer ne image quelconque de la bonne dimension picture 1 : stretch_on 1 ' width 1,800 : height 1,600 width 1,width(0)-10 : ' à ajuster pour ta configuration height 1,height(0)-40 : ' à ajuster pour ta configuration color 1,255,127,127 ' placer cette image dans le presse-papier clipboard_copy 1 ' attendre Windows... pause 500
' charger cette image dans l'image interne de la DLL i% = dll_call0("LoadPicture")
' paramétrer le dégradé sta$ = "P" adresse$ = "235,350" c0$ = "240,237,23" c1$ = "16,46,216"
' faire de dégradé dns l'image interne de la DLL i% = dll_call4("CreatePictureGradientColor",adr(sta$),adr(adresse$),adr(c0$),adr(c1$))
' récupérer l'image interne de la DLL dans le presse-papier i% = dll_call0("SavePicture") ' attendre Windows... pause 300
' récupérer cette image dans notre picture clipboard_paste 1
' sauvegarder l'image dans un fichier file_save 1,rep$+"MonFond.bmp"
memo 2 : top 2,30 : left 2,100 font_size 2,16 : font_bold 2 width 2,300 : height 2,250 item_add 2,"Voilà un fond d'écran" item_add 2,"sauvé dans MondFond.nmp." item_add 2,"" item_add 2,"Tu peux le convertir en JPG" item_add 2,"et le charger dans le picture" item_add 2,"qui sert de font d'écran," item_add 2,"dans tous les programmes qui" item_add 2,"ont besoin d'un tel fond."
button 3 : top 3,400 : left 3,200 : caption 3,"Sortir" on_click 3,sortir end
sortir: dll_off terminate
| |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran Jeu 28 Juin 2012 - 10:01 | |
| Encore un travail remarquable, Klaus !
Peut-on avoir le source de cette DLL ?
Utilises-tu une bibliothèque externe genre Imagemagick ou bien est-ce que tu fais tout en Delphi ? | |
| | | Contenu sponsorisé
| Sujet: Re: Nouvelle DLL pour faire une copie d'écran | |
| |
| | | | Nouvelle DLL pour faire une copie d'écran | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |