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.
Nouvelle DLL pour faire une copie d'écran Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Nouvelle DLL pour faire une copie d'écran Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Nouvelle DLL pour faire une copie d'écran Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Nouvelle DLL pour faire une copie d'écran Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Nouvelle DLL pour faire une copie d'écran Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Nouvelle DLL pour faire une copie d'écran Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Nouvelle DLL pour faire une copie d'écran Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Nouvelle DLL pour faire une copie d'écran Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Nouvelle DLL pour faire une copie d'écran Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Nouvelle DLL pour faire une copie d'écran Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Nouvelle DLL pour faire une copie d'écran Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Nouvelle DLL pour faire une copie d'écran Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Nouvelle DLL pour faire une copie d'écran Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Nouvelle DLL pour faire une copie d'écran Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Nouvelle DLL pour faire une copie d'écran 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
-17%
Le deal à ne pas rater :
(Black Friday) Apple watch Apple SE GPS + Cellular 44mm (plusieurs ...
249 € 299 €
Voir le deal

 

 Nouvelle DLL pour faire une copie d'écran

Aller en bas 
5 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyJeu 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyJeu 21 Juin 2012 - 1:45

Cool !
Ça manquait cette fonction !! Nouvelle DLL pour faire une copie d'écran 35
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyJeu 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
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyJeu 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é.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyJeu 21 Juin 2012 - 10:23

Woui, mais c'est rapidement trop long. Mais bon, tant pis, on fera avec ... Merci Klaus.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyDim 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyLun 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 Wink )
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyLun 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyLun 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 Wink Bonne chance Klaus
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMar 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMar 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:
Nouvelle DLL pour faire une copie d'écran A2_bmp10

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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMar 26 Juin 2012 - 16:02

Juste un mot: nickel
Super pratique. je pense que cette DLL servira souvent ...
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMar 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMer 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 ?
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMer 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMer 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMer 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMer 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:
Nouvelle DLL pour faire une copie d'écran Ap10

Et voici un dégradé par ligne:
t$ = "L"
s$ = "250"
c1$ = "240,237,23"
c2$ = "16,46,216"
Cela donne ceci:
Nouvelle DLL pour faire une copie d'écran Al10

En enfin un dégradé par colonne:
t$ = "C"
s$ = "350"
c1$ = "240,237,23"
c2$ = "16,46,216"
Cela donne ceci:
Nouvelle DLL pour faire une copie d'écran Ac10
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMer 27 Juin 2012 - 23:12

!tu as encore beaucoup de bonnes idées du genre en réserve ? Wink
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMer 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 !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyMer 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)
@+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyJeu 28 Juin 2012 - 0:07

Voici la place que mes DLLs prennent sur disque (c'est le dossier DLL de mon WebDav):
Nouvelle DLL pour faire une copie d'écran A118
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).
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyJeu 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.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyJeu 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran EmptyJeu 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 ?
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Contenu sponsorisé





Nouvelle DLL pour faire une copie d'écran Empty
MessageSujet: Re: Nouvelle DLL pour faire une copie d'écran   Nouvelle DLL pour faire une copie d'écran Empty

Revenir en haut Aller en bas
 
Nouvelle DLL pour faire une copie d'écran
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Pb avec copié-collé-adapté d'un button pour en faire un 2eme
» Pour faire plaisir à jjn4.
» Pour faire patienter...
» Pour faire patienter
» Pour faire patienter

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: