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 |
|
|
| 2.28 du 1er mai 2013: nouvelle fonction TorturePicture | |
| | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Mer 1 Mai 2013 - 22:55 | |
| Nouvelle version: KGF.dll V2.28 du 01/05/2013Nouveauté: nouvelle fonction TorturePictureModules modifiés: KGF.dll KGF_SUB.bas KGF.chm, KGF.doc, KGF.pdfObjectif: Cette fonction "torture" l'image interne ! Cela veut dire qu'elle déforme l'image interne en la projetant vers un quadrilatère quelconque ! Génial pour produire un effet de perspective, tant horizontal que vertical, même pour "vriller" une image si le coin droit passe à gauche du coin gauche, etc. On l'appelle de la manière suivante: KGF.dll: res% = dll_call4("TorturePicture",adr(HD$),adr(HG$),adr(BG$),adr(BD$)) KGF_SUB.bas: sub TorturePicture(hdx%,hdy%,hgx%,hgy%,bgx%,bgy%,bdx%,bdy%) Les variables HD$, HG$, BG$ et BD$ contiennent les coordonnées x et y en format "x,y". La procédure de KGF_SUB.bas produit cela de façon automatique. Et voici le programme effets.bas incluant cette fonction: - Code:
-
' effets.bas
label labels : gosub labels gosub constantes gosub variables gosub form0 gosub menu gosub GUI gosub initialisations end
labels: label constantes, variables, menu, form0 label GUI, initialisations label ouvrir, sauver, sortir, purger, couper label gradient, change_debut, change_fin label gammas, brillance, gris, filtrer, change_filtre label outil1, outil2, click_picture label remp_debut, remp_fin, remplacer, pipette_debut, pipette_fin label miroir, coin_HG, coin_HD, coin_BG, coin_BD, torturer return
constantes: dim KGF$ : KGF$ = "C:\DOCUME~1\Klaus\MESDOC~1\MESPRO~3\KGF\KGF.dll" dim M1% : M1% = 0 - 1 dim M20% : M20% = 0-20 dim grad_type$ : grad_type$ = "LCPRB" dim tit_outil1$ : tit_outil1$ = "Générateur de bulles d'information" dim tit_outil2$ : tit_outil2$ = "Incruster des vignettes dans une image" dim nom_outil1$ : nom_outil1$ = "C:\DOCUME~1\Klaus\MESDOC~1\MESPRO~2\INFOBU~1\INFOBU~1.EXE" dim nom_outil2$ : nom_outil2$ = "C:\DOCUME~1\Klaus\MESDOC~1\MESPRO~2\INFOBU~1\INCRUS~1.EXE"
return variables: dim i%, w%,h%, R%, G%, B%, n%, f1$, f2$, s$ dim sta$, adresse$, c0$, c1$, present% dim no%, no1%, no2% dim no_open%, no_save%, no_image%, no_menu_effets% dim no_grad_x%, no_grad_y%, no_grad_type%, no_cont_grad% dim no_grad_debut%, no_grad_debut_R%, no_grad_debut_G%, no_grad_debut_B% dim no_grad_fin%, no_grad_fin_R%, no_grad_fin_G%, no_grad_fin_B% dim no_cont_gamma%, no_gamma%, no_gamma_wait%, no_cont_clip% dim no_clip_x0%, no_clip_y0%, no_clip_x1%, no_clip_y1%, x0%, x1%, y0%, y1% dim no_cont_bright%, no_bright%, no_bright_wait% dim no_cont_gris%, no_gris_wait% dim no_cont_filter%, no_filter_wait%, no_filter_r%, no_filter_g%, no_filter_b% dim no_filter%, no_filtre_r%, no_filtre_g%, no_filtre_b% dim no_remp_debut%, no_remp_fin%, no_miroir_wait%, no_torture_wait% dim no_remp_debut_R%, no_remp_debut_G%, no_remp_debut_B%, no_cont_miroir% dim no_remp_fin_R%, no_remp_fin_G%, no_remp_fin_B%, no_remp_wait%, no_miroir% dim no_cont_rempl%, pipette%, no_cont_torture%, no_HG%, no_HD%, no_BG%, no_BD% dim no_rempl_click%, no_torture_click% dim image_w%, image_h%, fact_w, fact_h, coin%, sa$, sb$, sc$, sd$ return
form0: full_space 0 on_close 0,purger return
GUI: no% = no% + 1 : open_dialog no% : no_open% = no% filter no%,"Images|*.bmp;*.jpg" no% = no% + 1 : save_dialog no% : no_save% = no% filter no%,"Images|*.bmp"
no% = no% + 1 : picture no% : no_image% = no% top no%,10 : left no%,10 : stretch_on no% width no%,800 : height no%,460 on_click no%,click_picture no% = no% + 1 : container no% : no1% = no% : no_cont_grad% = no% width no%,400 : height no%,290 : inactive no% caption no%,"Dégradé de couleurs" top no%,10 : left no%,width(no_image%)+20 width no%,300 no% = no% + 1 : alpha no% : parent no%,no1% top no%,20 : left no%,20 : caption no%,"Point de référence X:" no% = no% + 1 : edit no% : parent no%,no1% : no_grad_x% = no% top no%,20 : left no%,130 : width no%,40 no% = no% + 1 : alpha no% : parent no%,no1% top no%,20 : left no%,190 : caption no%,"Y:" no% = no% + 1 : edit no% : parent no%,no1% : no_grad_y% = no% top no%,20 : left no%,210 : width no%,40 no% = no% + 1 : alpha no% : parent no%,no1% top no%,50 : left no%,20 : caption no%,"Type de dégradé" no% = no% + 1 : combo no% : parent no%,no1% : no_grad_type% = no% top no%,50 : left no%,130 : width no%,120 item_add no%,"par lignes" item_add no%,"par colonnes" item_add no%,"en rectangle" item_add no%,"en cercle" item_add no%,"en bulles" no% = no% + 1 : alpha no% : parent no%,no1% top no%,80 : left no%,20 : caption no%,"Couleur de début" no% = no% + 1 : picture no% : parent no%,no1% top no%,100 : left no%,10 : width no%,130 : height no%,150 no_grad_debut% = no% color no%,255,0,0 no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,110 : left no%,30 : min no%,0 : max no%,255 no_grad_debut_r% = no% position no%,255 : on_change no%,change_debut no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,110 : left no%,60 : min no%,0 : max no%,255 no_grad_debut_g% = no% position no%,0 : on_change no%,change_debut no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,110 : left no%,90 : min no%,0 : max no%,255 no_grad_debut_b% = no% position no%,0 : on_change no%,change_debut no% = no% + 1 : alpha no% : parent no%,no1% top no%,80 : left no%,170 : caption no%,"Couleur de fin" no% = no% + 1 : picture no% : parent no%,no1% top no%,100 : left no%,160 : width no%,130 : height no%,150 no_grad_fin% = no% color no%,255,0,0 no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,110 : left no%,180 : min no%,0 : max no%,255 no_grad_fin_r% = no% position no%,255 : on_change no%,change_fin no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,110 : left no%,210 : min no%,0 : max no%,255 no_grad_fin_g% = no% position no%,0 : on_change no%,change_fin no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,110 : left no%,240 : min no%,0 : max no%,255 no_grad_fin_b% = no% position no%,0 : on_change no%,change_fin no% = no% + 1 : button no% : parent no%,no1% top no%,260 : left no%,10 : caption no%,"Appliquer" on_click no%,gradient
no% = no% + 1 : container no% : no1% = no% : no_cont_gamma% = no% width no%,400 : height no%,70 : inactive no% caption no%,"Gamma" top no%,300 : left no%,width(no_image%)+20 width no%,300 no% = no% + 1 : check no% : parent no%,no1% : no_gamma% = no% width no%,200 : top no%,20 : left no%,10 caption no%,"Augmenter le Gamma (plus clair)" no% = no% + 1 : button no% : parent no%,no1% top no%,40 : left no%,10 : caption no%,"Appliquer" on_click no%,gammas no% = no% + 1 : alpha no% : parent no%,no1% : no_gamma_wait% = no% : hide no% top no%,40 : left no%,200 : caption no%,"Attendre svp..."
no% = no% + 1 : container no% : no1% = no% : no_cont_bright% = no% width no%,400 : height no%,70 : inactive no% caption no%,"Brillance" top no%,370 : left no%,width(no_image%)+20 width no%,300 no% = no% + 1 : check no% : parent no%,no1% : no_bright% = no% width no%,200 : top no%,20 : left no%,10 caption no%,"Augmenter la brillance" no% = no% + 1 : button no% : parent no%,no1% top no%,40 : left no%,10 : caption no%,"Appliquer" on_click no%,brillance no% = no% + 1 : alpha no% : parent no%,no1% : no_bright_wait% = no% : hide no% top no%,40 : left no%,200 : caption no%,"Attendre svp..."
no% = no% + 1 : container no% : no1% = no% : no_cont_gris% = no% width no%,400 : height no%,60 : inactive no% caption no%,"Niveaux de gris" top no%,440 : left no%,width(no_image%)+20 width no%,300 no% = no% + 1 : button no% : parent no%,no1% top no%,20 : left no%,10 : caption no%,"Appliquer" on_click no%,gris no% = no% + 1 : alpha no% : parent no%,no1% : no_gris_wait% = no% : hide no% top no%,20 : left no%,200 : caption no%,"Attendre svp..."
no% = no% + 1 : container no% : no1% = no% : no_cont_filter% = no% width no%,400 : height no%,220 : inactive no% caption no%,"Filtre par couleur" top no%,500 : left no%,width(no_image%)+20 width no%,300 no% = no% + 1 : picture no% : parent no%,no1% top no%,20 : left no%,10 : width no%,130 : height no%,160 no_filter% = no% color no%,255,0,0 no% = no% + 1 : check no% : parent no%,no1% : no_filter_r% = no% top no%,30 : left no%,25 : caption no%,"R" : width no%,25 no% = no% + 1 : check no% : parent no%,no1% : no_filter_g% = no% top no%,30 : left no%,55 : caption no%,"G" : width no%,25 no% = no% + 1 : check no% : parent no%,no1% : no_filter_b% = no% top no%,30 : left no%,85 : caption no%,"B" : width no%,25 no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,50 : left no%,30 : min no%,0 : max no%,255 no_filtre_r% = no% position no%,255 : on_change no%,change_filtre no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,50 : left no%,60 : min no%,0 : max no%,255 no_filtre_g% = no% position no%,0 : on_change no%,change_filtre no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,50 : left no%,90 : min no%,0 : max no%,255 no_filtre_b% = no% position no%,0 : on_change no%,change_filtre no% = no% + 1 : button no% : parent no%,no1% top no%,190 : left no%,10 : caption no%,"Appliquer" on_click no%,filtrer no% = no% + 1 : alpha no% : parent no%,no1% : no_filter_wait% = no% : hide no% top no%,190 : left no%,200 : caption no%,"Attendre svp..."
no% = no% + 1 : container no% : no1% = no% : no_cont_clip% = no% width no%,120 : height no%,200 : inactive no% caption no%,"Extraire rectangle" top no%,10 : left no%,left(no_cont_grad%)+width(no_cont_grad%)+10 no% = no% + 1 : alpha no% : parent no%,no_cont_clip% top no%,20 : left no%,10 : caption no%,"X0:" no% = no% + 1 : edit no% : parent no%,no_cont_clip% : no_clip_x0% = no% top no%,20 : left no%,40 : width no%,50 no% = no% + 1 : alpha no% : parent no%,no_cont_clip% top no%,50 : left no%,10 : caption no%,"Y0:" no% = no% + 1 : edit no% : parent no%,no_cont_clip% : no_clip_y0% = no% top no%,50 : left no%,40 : width no%,50 no% = no% + 1 : alpha no% : parent no%,no_cont_clip% top no%,90 : left no%,10 : caption no%,"X1:" no% = no% + 1 : edit no% : parent no%,no_cont_clip% : no_clip_x1% = no% top no%,90 : left no%,40 : width no%,50 no% = no% + 1 : alpha no% : parent no%,no_cont_clip% top no%,120 : left no%,10 : caption no%,"Y1:" no% = no% + 1 : edit no% : parent no%,no_cont_clip% : no_clip_y1% = no% top no%,120 : left no%,40 : width no%,50 no% = no% + 1 : button no% : parent no%,no_cont_clip% top no%,160 : left no%,10 : caption no%,"Couper" on_click no%,couper no% = no% + 1 : container no% : no1% = no% : no_cont_rempl% = no% width no%,310 : height no%,260 : inactive no% caption no%,"Remplacer une couleur" top no%,top(no_image%)+height(no_image%)+10 : left no%,10 no% = no% + 1 : alpha no% : parent no%,no1% top no%,20 : left no%,20 : caption no%,"Couleur à remplacer" no% = no% + 1 : picture no% : parent no%,no1% top no%,40 : left no%,10 : width no%,130 : height no%,150 no_remp_debut% = no% color no%,255,0,0 no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,50 : left no%,30 : min no%,0 : max no%,255 no_remp_debut_r% = no% position no%,255 : on_change no%,remp_debut no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,50 : left no%,60 : min no%,0 : max no%,255 no_remp_debut_g% = no% position no%,0 : on_change no%,remp_debut no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,50 : left no%,90 : min no%,0 : max no%,255 no_remp_debut_b% = no% position no%,0 : on_change no%,remp_debut no% = no% + 1 : alpha no% : parent no%,no1% top no%,20 : left no%,170 : caption no%,"Nouvelle couleur" no% = no% + 1 : picture no% : parent no%,no1% top no%,40 : left no%,160 : width no%,130 : height no%,150 no_remp_fin% = no% color no%,255,0,0 no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,50 : left no%,180 : min no%,0 : max no%,255 no_remp_fin_r% = no% position no%,255 : on_change no%,remp_fin no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,50 : left no%,210 : min no%,0 : max no%,255 no_remp_fin_g% = no% position no%,0 : on_change no%,remp_fin no% = no% + 1 : scroll_bar no% : parent no%,no1% : vertical no% top no%,50 : left no%,240 : min no%,0 : max no%,255 no_remp_fin_b% = no% position no%,0 : on_change no%,remp_fin no% = no% + 1 : alpha no% : parent no%,no1% : no_remp_wait% = no% : hide no% top no%,40 : left no%,110 : caption no%,"Attendre svp..." no% = no% + 1 : alpha no% : parent no%,no1% : no_rempl_click% = no% : hide no% top no%,200 : left no%,100 : caption no%,"Cliquez dans l'image..." no% = no% + 1 : button no% : parent no%,no1% top no%,200 : left no%,10 : caption no%,"Pipette" on_click no%,pipette_debut no% = no% + 1 : button no% : parent no%,no1% top no%,200 : left no%,215 : caption no%,"Pipette" on_click no%,pipette_fin no% = no% + 1 : button no% : parent no%,no1% top no%,230 : left no%,110 : caption no%,"Appliquer" on_click no%,remplacer
no% = no% + 1 : container no% : no1% = no% : no_cont_miroir% = no% width no%,130 : height no%,100 : inactive no% caption no%,"Appliquer un effet miroir" top no%,top(no_image%)+height(no_image%)+10 : left no%,left(no_cont_rempl%)+width(no_cont_rempl%)+10 no% = no% + 1 : check no% : parent no%,no1% : no_miroir% = no% top no%,20 : left no%,10 : caption no%,"Miroir vertical" no% = no% + 1 : alpha no% : parent no%,no1% : no_miroir_wait% = no% : hide no% top no%,40 : left no%,10 : caption no%,"Attendre svp..." no% = no% + 1 : button no% : parent no%,no1% top no%,50 : left no%,10 : caption no%,"Appliquer" on_click no%,miroir
no% = no% + 1 : container no% : no1% = no% : no_cont_torture% = no% width no%,230 : height no%,150 : inactive no% caption no%,"Torturer l'image" ' top no%,top(no_image%)+height(no_image%)+10 : left no%,left(no_cont_miroir%)+width(no_cont_miroir%)+10 top no%,top(no_cont_miroir%)+height(no_cont_miroir%)+10 : left no%,left(no_cont_rempl%)+width(no_cont_rempl%)+10 no% = no% + 1 : button no% : parent no%,no1% : width no%,20 top no%,20 : left no%,10 : caption no%,"HG" on_click no%,coin_HG no% = no% + 1 : edit no% : parent no%,no1% : no_HG% = no% top no%,35 : left no%,35 : width no%,70 text no%,"0,0" no% = no% + 1 : button no% : parent no%,no1% : width no%,20 top no%,20 : left no%,200 : caption no%,"HD" on_click no%,coin_HD no% = no% + 1 : edit no% : parent no%,no1% : no_HD% = no% top no%,35 : left no%,125 : width no%,70 text no%,"0,0" no% = no% + 1 : button no% : parent no%,no1% : width no%,20 top no%,75 : left no%,10 : caption no%,"BG" on_click no%,coin_BG no% = no% + 1 : edit no% : parent no%,no1% : no_BG% = no% top no%,65 : left no%,35 : width no%,70 text no%,"0,0" no% = no% + 1 : button no% : parent no%,no1% : width no%,20 top no%,75 : left no%,200 : caption no%,"BD" on_click no%,coin_BD no% = no% + 1 : edit no% : parent no%,no1% : no_BD% = no% top no%,65 : left no%,125 : width no%,70 text no%,"0,0" no% = no% + 1 : alpha no% : parent no%,no1% : no_torture_click% = no% : hide no% top no%,90 : left no%,60 : caption no%,"Cliquez dans l'image..." no% = no% + 1 : alpha no% : parent no%,no1% : no_torture_wait% = no% : hide no% top no%,90 : left no%,60 : caption no%,"Attendre svp..." no% = no% + 1 : button no% : parent no%,no1% top no%,110 : left no%,80 : caption no%,"Appliquer" on_click no%,torturer
return
initialisations: dll_on KGF$ i% = dll_call1("SetImmediateMode",1) text no_clip_x0%,"0" text no_clip_y0%,"0" text no_clip_x1%,"100" text no_clip_y1%,"100" return menu: no% = no% + 1 : main_menu no% : no1% = no% no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no% caption no%,"Fichier" no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Ouvrir" : on_click no%,ouvrir no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Enregistrer" : on_click no%,sauver no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"-------------" no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Sortir" : on_click no%,sortir
no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no% caption no%,"Effets" : inactive no% : no_menu_effets% = no% no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Gradient" : on_click no%,gradient no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Gamma" : on_click no%,gammas no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Brillance" : on_click no%,brillance no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Niveaux de gris" : on_click no%,gris no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Filtre de couleurs" : on_click no%,filtrer no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Remplacer une couleur" : on_click no%,remplacer no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Effet miroir" : on_click no%,miroir no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"orturer" : on_click no%,torturer no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Extraire un rectangle" : on_click no%,couper
no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no% caption no%,"Outils" no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Info_bulle" : on_click no%,outil1 no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Incruster" : on_click no%,outil2
return ouvrir: f1$ = file_name$(no_open%) if f1$="_" then return file_load no_image%,f1$ clipboard_copy no_image% pause 500 i% = dll_call0("LoadPicture") image_w% = dll_call0("GetPictureWidth") image_h% = dll_call0("GetPictureHeight") fact_w = image_w%/width(no_image%) fact_h = image_h%/height(no_image%) present% = 1 text no_HG%,"0,0" text no_HD%,str$(image_w%-1)+",0" text no_BG%,"0,"+str$(image_h%-1) text no_BD%,str$(image_w%-1)+","+str$(image_h%-1) active no_menu_effets% active no_cont_grad% active no_cont_gamma% active no_cont_bright% active no_cont_gris% active no_cont_filter% active no_cont_clip% active no_cont_rempl% active no_cont_miroir% active no_cont_torture% return
sauver: if present%=0 message "Il n'y a pas d'image à enregistrer" return end_if f2$ = file_name$(no_save%) if f2$="_" then return if f2$="" then return if lower$(right$(f2$,4))<>".bmp" then f2$ = f2$ + ".bmp" if file_exists(f2$) s$ = "Le fichier "+f2$+"existe. Voulez_vous le remplacer ?" if message_confirmation_yes_no(s$)<>1 then return end_if file_save no_image%,f2$ return sortir: if present%=1 s$ = "Voulez-vous vraiment quitter le programme ?" if message_confirmation_yes_no(s$)<>1 then return end_if purger: if present%=1 i%=dll_call0("SavePicture") pause 3 end_if dll_off terminate change_debut: color no_grad_debut%,position(no_grad_debut_R%),position(no_grad_debut_G%),position(no_grad_debut_B%) return
change_fin: color no_grad_fin%,position(no_grad_fin_R%),position(no_grad_fin_G%),position(no_grad_fin_B%) return
remp_debut: color no_remp_debut%,position(no_remp_debut_R%),position(no_remp_debut_G%),position(no_remp_debut_B%) return
remp_fin: color no_remp_fin%,position(no_remp_fin_R%),position(no_remp_fin_G%),position(no_remp_fin_B%) return
gradient: if item_index(no_grad_type%)=0 message "Il faut choisir le type de dégradé." return end_if sta$ = mid$(grad_type$,item_index(no_grad_type%),1) adresse$ = text$(no_grad_x%)+","+text$(no_grad_y%) c0$ = str$(position(no_grad_debut_R%)) c0$ = c0$ + "," + str$(position(no_grad_debut_G%)) c0$ = c0$ + "," + str$(position(no_grad_debut_B%)) ' c0$ = "240,237,23" c1$ = "16,46,216" i% = dll_call4("CreatePictureGradientColor",adr(sta$),adr(adresse$),adr(c0$),adr(c1$)) pause 300 clipboard_paste no_image% return
gammas: show no_gamma_wait% display inactive no_cont_gamma% n% = checked(no_gamma%) i% = dll_call1("SetPictureGamma",n%) pause 300 clipboard_paste no_image% active no_cont_gamma% hide no_gamma_wait% return
brillance: show no_bright_wait% display inactive no_cont_bright% i% = M20% if checked(no_bright%)=1 then i% = 0 - M20% i% = dll_call1("SetPictureBrightness",i%) pause 300 clipboard_paste no_image% active no_cont_bright% hide no_bright_wait% return
gris: show no_gris_wait% display inactive no_cont_gris% i% = dll_call0("SetPictureGrayScale") pause 300 clipboard_paste no_image% active no_cont_gris% hide no_gris_wait% return
filtrer: show no_filter_wait% display inactive no_cont_filter% r% = m1% : g% = m1% : b% = m1% if checked(no_filter_r%)=1 then r% = position(no_filtre_R%) if checked(no_filter_g%)=1 then g% = position(no_filtre_G%) if checked(no_filter_b%)=1 then b% = position(no_filtre_B%) i% = dll_call3("SetPictureFilter",r%,g%,b%) pause 300 clipboard_paste no_image% active no_cont_filter% hide no_filter_wait% return
change_filtre: r% = position(no_filtre_R%) g% = position(no_filtre_G%) b% = position(no_filtre_B%) color no_filter%,r%,g%,b% return couper: x0% = int(val(text$(no_clip_x0%))) y0% = int(val(text$(no_clip_y0%))) x1% = int(val(text$(no_clip_x1%))) y1% = int(val(text$(no_clip_y1%))) i% = dll_call4("ExtractRectangleFromPicture",x0%,y0%,x1%,y1%) pause 300 clipboard_paste no_image% return
outil1: if handle_form(tit_outil1$)= 0 then execute nom_outil1$ return outil2: if handle_form(tit_outil2$)= 0 then execute nom_outil2$ return click_picture: if pipette%>0 extraire_couleur() pipette% = 0 hide no_rempl_click% end_if if coin%>0 placer_position() coin% = 0 hide no_torture_click% end_if return pipette_debut: pipette% = 1 show no_rempl_click% return pipette_fin: pipette% = 2 show no_rempl_click% return remplacer: if position(no_remp_debut_R%)=position(no_remp_fin_R%) if position(no_remp_debut_G%)=position(no_remp_fin_G%) if position(no_remp_debut_B%)=position(no_remp_fin_B%) message "C'est la même couleur !" return end_if end_if end_if show no_remp_wait% display inactive no_cont_rempl% i% = dll_call6("ReplacePictureColor",position(no_remp_debut_R%),position(no_remp_debut_G%),position(no_remp_debut_B%),position(no_remp_fin_R%),position(no_remp_fin_G%),position(no_remp_fin_B%)) pause 300 clipboard_paste no_image% active no_cont_rempl% hide no_remp_wait% return miroir: show no_miroir_wait% display inactive no_cont_miroir% i% = dll_call1("MirrorPicture",checked(no_miroir%)+1) pause 300 clipboard_paste no_image% active no_cont_miroir% hide no_miroir_wait% return
coin_HG: coin% = 1 show no_torture_click% return
coin_HD: coin% = 2 show no_torture_click% return
coin_BG: coin% = 3 show no_torture_click% return
coin_BD: coin% = 4 show no_torture_click% return torturer: show no_torture_wait% display inactive no_cont_torture% sa$ = trim$(text$(no_HD%)) sb$ = trim$(text$(no_HG%)) sc$ = trim$(text$(no_BG%)) sd$ = trim$(text$(no_BD%)) i% = dll_call4("TorturePicture",adr(sa$),adr(sb$),adr(sc$),adr(sd$)) pause 300 clipboard_paste no_image% active no_cont_torture% hide no_torture_wait% return sub extraire_couleur() dim_local x%, y%, r%, g%, b% x% = mouse_x_left_down(no_image%)*fact_w y% = mouse_y_left_down(no_image%)*fact_h r% = color_pixel_red(no_image%,x%,y%) g% = color_pixel_green(no_image%,x%,y%) b% = color_pixel_blue(no_image%,x%,y%) if pipette%=1 position no_remp_debut_R%,r% position no_remp_debut_G%,g% position no_remp_debut_B%,b% else position no_remp_fin_R%,r% position no_remp_fin_G%,g% position no_remp_fin_B%,b% end_if end_sub sub placer_position() dim_local x%, y% x% = mouse_x_left_down(no_image%)*fact_w y% = mouse_y_left_down(no_image%)*fact_h select coin% case 1: text no_HG%,str$(x%)+","+str$(y%) case 2: text no_HD%,str$(x%)+","+str$(y%) case 3: text no_BG%,str$(x%)+","+str$(y%) case 4: text no_BD%,str$(x%)+","+str$(y%) end_select end_sub
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Mer 1 Mai 2013 - 23:06 | |
| Pas mal du tout ce truc, à voir de plus près !
(NB mais où s'arrêtera-t-il ?) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Mer 1 Mai 2013 - 23:19 | |
| D'abord bravo et merci. Tant que tu y es, tu pourrais ajouter d'autres déformations telles que la projection sur un cylindre ou sur une cuvette ? Sinon, il y a la possibilité de rajouter des gouttes d'eau (déformation sphérique) Bon, voilà, j'essaye de trouver des trucs pour t'occuper Klaus. Histoire que ce ne soit pas trop facile par ce que sinon quand tu es lancé, ça va trop vite Après il y aurait la possibilité de calculer des images pour faire des scrollings différentiels mais je pense que ce serait assez compliqué de faire quelque chose de simple en passant par une DLL. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| | | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Mer 1 Mai 2013 - 23:41 | |
| Je crois que Klaus à confondu fête du travail et faites du travail !! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 0:02 | |
| Eh bien, justement ... j'ai travaillé !!!!! Voici un aperçu de ce que cela donné: Avant: Après: Ou alors: | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 0:19 | |
| C'est super Klaus (ça permet de caller une image sur un mur en perspective simplement par exemple) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 0:24 | |
| Oui. Ca permet de faire des perspectives dans un PICTURE en 2D, ou dans un SCENE2D en chargeant une image de fond avec perspective, et même pour des SPRITE... Je suis certain que vous trouverez de quoi l'utiliser ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 0:57 | |
| C'est certain. Tu avais fait aussi la rotation libre dans tes fonctions Klaus ? (Fonction dégradante de l'image d'origine puisque sur un rotation libre l'image doit être adaptée aux contraintes des pixels) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 1:31 | |
| Si Klaus pourrait nous faire une DLL qui s’appellerait Code_Moi_Ce_Que_J’ai_Dans_La_Tete, on l’appellerait autant de fois que l’on voudrait comme ceci, par exemple : res% = dll_call1("Code_Moi_Ce_Que_J’ai_Dans_La_Tete ").Alors là, on aurait tous les programmes à porté de main ! Klaus, veux-tu tenter ce mini projet ? Sincèrement Klaus, on ne peut qu’être admiratif de ton talent et de ta capacité de programmation. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Mai 2013 - 4:59 | |
| Quoique c'est que çà ? Bizarre, j'ai bossé toute la nuit sur l'ancienne version, tout aller bien. je ferme l' éditeur pour mettre tout KGF à jours, y compris dans mon dossier de travail, je ré-ouvre l' éditeur et !!! J'ai essayé de faire marche arrière en récupérant la dll + KGF_SUB sur mon webdav et toujours pareil . j' y comprends plus rien, tout fonctionnait... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 9:58 | |
| @Ygeronimi: C'est certainement lié à autre chose que TorturePicture. Tu utilises BDR, et je m'en sers tous les jour sans problème. Es-tu certain que BDR.dll est bien à la bonne place ? Essaie de déterminer sur quel appel de fonction ça plante. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Mai 2013 - 12:27 | |
| @ Klaus, Je ne pense pas non plus que ce soit sur la dernière fonction ajoutée. Je ne l' utilise pas. Mais peut être a t elle créée une interférence avec d'autres. Je te mets ma version bugguante: Mon Ecurie Vs 2.2Apparemment cela ce passerait sur : res%=dll_call3("AnalyzeImageFile",adr(jpeg$),adr(larg%),adr(haut%)) Ligne 968 de "fonctions.bas" Edit: Par acquis de conscience, j' ai rechargé KGF.dll et KGF_SUB.bas et c' est pareil... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 13:32 | |
| Salut Klaus. Je m’intéresse actuellement aux fonctions de gestion de la souris dans KGF.DLL. Dans la documentation, il est écrit pour la fonction MousePosition : Cette routine place la souris en position (x%,y%) en coordonnées de la form en pixels.Et pour la fonction GetMousePosition, il est écrit la même chose, à savoir : Cette routine place la souris en position (x%,y%) en coordonnées de la form en pixels.En réalité, on doit lire : ( corrige-moi si je n’ai pas bien saisi le sens) Cette routine renvoie la position de la souris en coordonnées de la form en pixels dans les variables x% et y%Même remarque pour GetAbsoluteMousePosition, on doit lire : Cette routine renvoie la position de la souris en absolu dans les variables x% et y%Est-ce correct ce que je dis ? Si c'est OUI, tu veux bien corriger la doc; si c'est NON, tu veux bien me corriger : dans tous les cas, tu as quelque chose (ou quelqu'un !) à corriger. Merci pour ton attention. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 13:58 | |
| Tu dois avoir un problème de construction du chemin vers la phito. Je n'ai pas beaucoup de temps en ce moment, mais j'ai inséré une ligne dans ta procédure, et ça marche. Regarde: - Code:
-
Sub AffichagePhoto(I$) Dim_Local res%,jpeg$,larg%,haut%,larg_max%,haut_max%,x%,y%,z larg_max%=width(700)-196 :haut_max%=height(700)-68 : jpeg$=I$ :z=1 jpeg$ = dir_current$+"\Photos\Gamin d ablon_1998626_Salon de Provence.jpg" : ' <===== Klaus res%=dll_call3("AnalyzeImageFile",adr(jpeg$),adr(larg%),adr(haut%)) x%=larg% :y%=haut%
Cherche de ce côté-là. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Mai 2013 - 14:25 | |
| Je vais regarder mais un peu plus tard... Je rentre dans ma 43ème année aujourd'hui et c' est le défilé à la maison. Pas moyen de me concentrer sur quoi que ce soit... Bref, je commence bien, je commence par un bug, c'est pas mal non ? Merci de ton attention Klaus. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 15:35 | |
| J'essaie de torturer un peu mes images, il faut bien se défouler... - j'ai repris l'exemple de la documentation (déformation en losange), il semble qu'une symétrie gauche/droite soit également appliquée ? - dans le code de l'exemple, ce n'est pas dll_call1 mais dll_call4("Torture...)
- c'est peut-être une remarque bête, mais je suppose (dans le cas du losange par exemple) que les parties blanches dégagées par le losange font partie intégrante de l'image, et que celle-ci est toujours rectangulaire ? ps: oui, je pense que c'est une remarque bête. | |
| | | Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: TorturePicture Jeu 2 Mai 2013 - 16:48 | |
| Cela n'a rien à voir avec le sujet, mais... BON ANNIVERSAIRE !!! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 17:06 | |
| Bin, bon, bon anniversaire. Mais à qui ? Si c’est à Klaus, pourquoi le fais-tu naître 10 jours AK*AK* : Avant Klaus, puisque Klaus est né le 12/05 et nous sommes le 02/05 ------------------------------------------------------------------- EDIT : Désolé Ygeronimi, je suis en déphasage de pi/2. Ce n’est que maintenant que je comprends qu’il s’agit de toi, Alors | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 18:24 | |
| @Klaus, ça ne marche plus (ici redimensionnement), et je ne vois pas pourquoi... - Code:
-
DIM f$, fr$, i%, w%, h%, wi%, hi% f$ = "C:\GRAPH\JPG\GOLDGATE.JPG": ' image d'origine en 640x480 fr$ = "C:\TEMP\TEST.JPG": ' image résultat DLL_ON "C:\PANORAMIC\KLAUS\DLLs\KGF.dll": ' <==== chemin de la DLL
i% = DLL_CALL3("AnalyzeImageFile",ADR(f$),ADR(wi%),ADR(hi%)): ' dimensions PRINT STR$(wi%)+" x " + STR$(hi%) i% = DLL_CALL1("LoadAnyImageFile",ADR(f$)): ' fichier image -> clipboard i% = DLL_CALL0("LoadPicture"): ' clipboard -> image interne w% = 320: h% = 240 i% = DLL_CALL2("ResizePicture",h%,w%): ' redimensionnement en 320x240 i% = DLL_CALL0("SavePicture"): ' récupération de l'image interne -> clipboard i% = DLL_CALL1("SaveAnyImageFile",ADR(fr$)): ' enregistrement dans fr$ i% = DLL_CALL3("AnalyzeImageFile",ADR(f$),ADR(w%),ADR(h%)): ' dimensions PRINT STR$(w%)+" x " + STR$(h%): ' <=========== inchangé ! end je n'arrive pas à voir ce que je fais mal... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Mai 2013 - 19:11 | |
| He oui à une époque on disais avant JC mais c'était une autre religion mais çà c'était avant.... Pour la religion Panoramicienne c'est avant KGF (ndlr :Klaus) que voulez vous les époques changent... Merci à tous pour vos souhaits de bon anniversaire... @ JL35, je crois que tu as le même problème que moi sur : i% = DLL_CALL3("AnalyzeImageFile",ADR(f$),ADR(w%),ADR(h%)) Chez moi c'est res% au lieu de i% mais bon çà déconne pareil. As tu l'accès violation de KGF.dll en message toi aussi ?... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 19:42 | |
| @Ygeronimi:Tout d'abord, je te souhaite un joyeux anniversaire, entouré de ta famille et de ceux qui te sont chers !Pour ton problème, je répète: cela vient du chemin vers le fichier qui n'est pas bon. Mais je vais modifier la fonction dans la DLL pour au moins éviter le crash dans un tel cas. @JL35:J'étais absent toute la journée, et je commence seulement à regarder ce qui s'est passé. Un bref regard sur ton code me montre que tu as négligé une petite info de la doc, pour PictureResize: - Citation :
- Cette fonction agit uniquement sur le presse-papier. Elle n'utilise PAS l'image interne. Elle permet de redimensionner l'image du presse-papier comme s'il y avait un STRETCH_ON sur le presse-papier. Ceci permet d'agrandir ou de réduire facilement des images, produire des icônes etc. Il suffit de copier une image dans le presse-papier, de la redimensionner, puis de la recharger à partir du presse-papier.
Je mets dont en commentaire dans ton code ce qui pose problème: - Code:
-
DIM f$, fr$, i%, w%, h%, wi%, hi% f$ = "C:\GRAPH\JPG\GOLDGATE.JPG": ' image d'origine en 640x480 fr$ = "C:\TEMP\TEST.JPG": ' image résultat DLL_ON "C:\PANORAMIC\KLAUS\DLLs\KGF.dll": ' <==== chemin de la DLL
i% = DLL_CALL3("AnalyzeImageFile",ADR(f$),ADR(wi%),ADR(hi%)): ' dimensions PRINT STR$(wi%)+" x " + STR$(hi%) i% = DLL_CALL1("LoadAnyImageFile",ADR(f$)): ' fichier image -> clipboard ' ================= Klauus: la ligne suivante est inutile ici ! i% = DLL_CALL0("LoadPicture"): ' clipboard -> image interne w% = 320: h% = 240 i% = DLL_CALL2("ResizePicture",h%,w%): ' redimensionnement en 320x240 ' ================= Klaus: la ligne suivante écrase le presse-papier par l'image interne. ' ================= Donc, le résultat de ResizePicture est perdu et remplacé par l'image d'origine i% = DLL_CALL0("SavePicture"): ' récupération de l'image interne -> clipboard i% = DLL_CALL1("SaveAnyImageFile",ADR(fr$)): ' enregistrement dans fr$ i% = DLL_CALL3("AnalyzeImageFile",ADR(f$),ADR(w%),ADR(h%)): ' dimensions PRINT STR$(w%)+" x " + STR$(h%): ' <=========== inchangé ! end | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Mai 2013 - 20:10 | |
| Tout d'abord un grand MERCI pour toutes ces attentions.. Ensuite, je dois faire un grand MEA CULPA . Le problème, et je le dis pour tous ceux qui font des versions sur versions, venait du fait que : - Les adresses des photos ont été enregistrées dans la base avec le dossier principal portant le numéro de version "2.1". - Puis j'ai changé le numéro de version en modifiant le nom du dossier principal en "2.2". - Et du fait les adresses était en "2.1" et les photos en "2.2" du coup, la dll cherchait une photo avec une mauvaise adresse et BUG !!!! Ceci est de ma faute et pas de celle de KGF.dll... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 20:51 | |
| Conseil: enregistrer une adresse relative. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture Jeu 2 Mai 2013 - 21:22 | |
| Effectivement Klaus, j'étais tellement obnubilé par l'image interne que je n'ai pas fait attention que pour le resize tout se passe dans le clipboard. Désolé de t'avoir fait perdre ton temps pour une bêtise d'inattention, d'autant plus que la doc est bien claire là-dessus. Juste une petite remarque au passage: je demande un redimensionnement en 320x240 et je récupère un fichier en 319x239, pas grave mais un peu troublant, ça doit être des questions d'arrondi ou de conversion d'unités quelque part. | |
| | | Contenu sponsorisé
| Sujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture | |
| |
| | | | 2.28 du 1er mai 2013: nouvelle fonction TorturePicture | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |