FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» mise a jour calculatrice
par JL35 Aujourd'hui à 22:03

» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 20:32

» Compilateur FBPano
par jean_debord Aujourd'hui à 11:07

» Documentation de KGF
par Klaus Hier à 22:52

» Zoom sur une portion d'écran
par JL35 Hier à 21:51

» double guillemets "" dans un EDIT
par pascal10000 Hier à 21:08

» Recherche d'une expression dans un source
par Marc 37 Hier à 13:08

» Tracer une grille n'importe où sur l'écran
par JL35 Dim 19 Nov 2017 - 22:14

» TourD Version 2
par Klaus Sam 18 Nov 2017 - 23:58

» La métamatière et le peuple
par JL35 Ven 17 Nov 2017 - 21:18

» Capture d'une zone de l'écran total
par JL35 Ven 17 Nov 2017 - 18:41

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 17 Nov 2017 - 11:49

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
27282930   
CalendrierCalendrier

Partagez | 
 

 2.28 du 1er mai 2013: nouvelle fonction TorturePicture

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
Klaus

avatar

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

MessageSujet: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Mer 1 Mai 2013 - 23:55

Nouvelle version:
KGF.dll V2.28 du 01/05/2013

Nouveauté:
nouvelle fonction TorturePicture

Modules modifiés:
KGF.dll
KGF_SUB.bas
KGF.chm, KGF.doc, KGF.pdf


Objectif:
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

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 5992
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 0:06

Pas mal du tout ce truc, à voir de plus près !

(NB mais où s'arrêtera-t-il ?)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5859
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 0: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 Wink

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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 2 Mai 2013 - 0:25

Quelqu'un a t il dit à Klaus que le 1er mai c' est la fête du travail... Laughing Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5859
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 0:41

Je crois que Klaus à confondu fête du travail et faites du travail !! Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 1:02

Eh bien, justement ... j'ai travaillé !!!!!

Voici un aperçu de ce que cela donné:

Avant:


Après:


Ou alors:
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5859
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 1:19

C'est super Klaus (ça permet de caller une image sur un mur en perspective simplement par exemple)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 1: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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5859
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 1: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)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5593
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 2: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 ? Laughing


Sincèrement Klaus, on ne peut qu’être admiratif de ton talent et de ta capacité de programmation.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 2 Mai 2013 - 5: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 affraid !!!

J'ai essayé de faire marche arrière en récupérant la dll + KGF_SUB sur mon webdav et
affraid toujours pareil .

j' y comprends plus rien, tout fonctionnait... Crying or Very sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 10: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 2 Mai 2013 - 13: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.2

Apparemment 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... No
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5593
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 14: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. Laughing

Merci pour ton attention.


Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

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

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 14: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à.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re    Jeu 2 Mai 2013 - 15:25

Je vais regarder mais un peu plus tard... Laughing

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... Laughing

Bref, je commence bien, je commence par un bug, c'est pas mal non ? Laughing Laughing Laughing

Merci de ton attention Klaus.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5992
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 16: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 394
Date d'inscription : 06/01/2012

MessageSujet: TorturePicture   Jeu 2 Mai 2013 - 17:48

Cela n'a rien à voir avec le sujet, mais... Very Happy BON ANNIVERSAIRE !!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
papydall

avatar

Nombre de messages : 5593
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 18: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5992
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 19: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 2 Mai 2013 - 20:11

He oui à une époque on disais avant JC mais c'était une autre religion mais çà c'était avant.... Laughing
Pour la religion Panoramicienne c'est avant KGF (ndlr :Klaus) que voulez vous les époques changent...
lol!

Wink 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 ?...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 20: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 2 Mai 2013 - 21:10

Tout d'abord un grand MERCI pour toutes ces attentions.. Embarassed

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... Embarassed
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 21:51

Conseil: enregistrer une adresse relative.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 5992
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   Jeu 2 Mai 2013 - 22:22

Embarassed 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: 2.28 du 1er mai 2013: nouvelle fonction TorturePicture   

Revenir en haut Aller en bas
 
2.28 du 1er mai 2013: nouvelle fonction TorturePicture
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Nouvelle interface Bbox, toujours rien ?
» La future gamme ideo du 26 août chez Bouygues Telecom ?
» La nouvelle Subaru WRX au Salon de Los Angeles 2013
» Nouvel An 2013
» Nouvelle mise a jour cartographique CN Europe 2013.10

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: