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.
KGF_dll - nouvelles versions - Page 6 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
KGF_dll - nouvelles versions - Page 6 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
KGF_dll - nouvelles versions - Page 6 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
KGF_dll - nouvelles versions - Page 6 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
KGF_dll - nouvelles versions - Page 6 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
KGF_dll - nouvelles versions - Page 6 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
KGF_dll - nouvelles versions - Page 6 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
KGF_dll - nouvelles versions - Page 6 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 6 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
KGF_dll - nouvelles versions - Page 6 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
KGF_dll - nouvelles versions - Page 6 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
KGF_dll - nouvelles versions - Page 6 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
KGF_dll - nouvelles versions - Page 6 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
KGF_dll - nouvelles versions - Page 6 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
KGF_dll - nouvelles versions - Page 6 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
-20%
Le deal à ne pas rater :
Drone Dji DJI Mini 4K (EU)
239 € 299 €
Voir le deal

 

 KGF_dll - nouvelles versions

Aller en bas 
+12
JL35
Oscaribout
bignono
Pedro
pascal10000
silverman
Jicehel
papydall
Minibug
Marc
Yannick
Klaus
16 participants
Aller à la page : Précédent  1 ... 5, 6, 7 ... 23 ... 40  Suivant
AuteurMessage
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyMar 28 Mar 2017 - 13:52

C'est vrai que le polygone ne ressemble pas vraiment à une info_bulle... Quoique... Dans des pages de pub, on voit souvent des étoiles, symétriques ou asymétriques, contenir des informations "flashantes".

Ceci dit, le polygone est une action différente. 6 est l'info-bulle selon ses 3 formats, et 6 est le polygone. C'est juste une forme graphique supplémentaire. Et pour des raisons de facilité, je l'ai inclus dans le programme de démo que voilà.

EDIT

D'ailleurs, a-tu vu la vitesse d'exécution ? Ca a l'air performant, non ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 6 EmptyMar 28 Mar 2017 - 15:01

Je n' ai pas encore exécuté le programme, j' ai juste vu la capture.
Là je me bats avec les formulaires de la CPAM et je crois qu' ils les ont écrit
en langage assembleur, le C++ est plus compréhensible que ces foutus papiers.
Bref j' exécuterai le programme d' ici ce soir, juste après celui qui a pondu ces formulaires.

lol!
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyMer 29 Mar 2017 - 1:01

Nouvelle version:
KGF.dll V7.34 du 29/03/2017

Nouveautés:
- nouvelle fonction: GetCanvasFromHandle

Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sont à jour.

Cette fonction donne exactement le même résultat que la fonction GetCanvas, mais elle est beaucoup plus simple d'utilisation, puisque sa syntaxe est:
Code:
CNV% = dll_call1("GetCanvasFromHandle",handle(obj%))

Dans le programme démo ci-après, j'ai remplacé tous les appels à GetCanvas par des appels à GetCanvasFromHandle, tout en laissant les anciens en commentaire. Et pour le plaisir, j'ai ajouté un mémo dans une des forms, par-dessus les graphismes qui y sont dessinés:
Code:
' test_picture_bulles.bas

' Il y a deux modes de connexion au canvas, depuis la version 7.34 de KGF.dll:
'  CNV% = dll_call2("GetCanvas",object_internal(obj%),adr(hdc%))
'      avec hdc%=handle_canvas(obj%)
'  CNV% = dll_call1("GetCanvasFromHandle",handle(obj%))
' Ces deux méthodes donnent exactement le même résultat,
' mais la seconde est plus facile d'utilisation.
' Ce programme de démo montre la seconde, la première étant en commentaire.

dim res%, hdc%, CNV%
dim params%(20), txt$, pol$, degre%, i%, c$
dim abscisses%(10), ordonnees%(10)

form 1 : top 1,40 : left 1,10 : width 1,400 : height 1,300
form 2 : top 2,40 : left 2,420 : width 2,400 : height 2,300
form 3 : top 3,350 : left 3,10 : width 3,400 : height 3,300
form 4 : top 4,350 : left 4,420 : width 4,400 : height 4,300

dll_on "KGF.dll"

Type_0()
memo 11: top 11,80 : left 11,100  : parent 11,1
item_add 11,"Ce mémo est ajouté"
item_add 11,"après les dessins !"
Type_1()
Type_2()
polygone()

end

sub Type_0(): ' rectangle simple
hdc% = handle_canvas(1)
' CNV% = dll_call2("GetCanvas",object_internal(1),adr(hdc%))
CNV% = dll_call1("GetCanvasFromHandle",handle(1))
params%(2) = 50
params%(3) = 50
params%(4) = 110
params%(5) = 90
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 0
params%(10) = 0  : ' type de bulle
params%(11) = 0
params%(12) = 0  : ' départ du coin haut à gauche
params%(13) = 10
params%(14) = 10
params%(15) = 10  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 280
params%(3) = 50
params%(4) = 340
params%(5) = 90
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 0
params%(10) = 0  : ' type de bulle
params%(11) = 0
params%(12) = 1  : ' départ du coin haut à droite
params%(13) = 370
params%(14) = 10
params%(15) = 10  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 280
params%(3) = 170
params%(4) = 340
params%(5) = 200
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 0
params%(10) = 0  : ' type de bulle
params%(11) = 0
params%(12) = 2  : ' départ du coin bas à droite
params%(13) = 370
params%(14) = 240
params%(15) = 10  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 50
params%(3) = 170
params%(4) = 110
params%(5) = 200
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 0
params%(10) = 0  : ' type de bulle
params%(11) = 0
params%(12) = 3  : ' départ du coin bas à gauche
params%(13) = 10
params%(14) = 240
params%(15) = 10  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 170
params%(3) = 50
params%(4) = 250
params%(5) = 90
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 0
params%(10) = 0  : ' type de bulle
params%(11) = 0
params%(12) = 4  : ' départ du bord haut
params%(13) = 210
params%(14) = 10
params%(15) = 10  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 280
params%(3) = 110
params%(4) = 340
params%(5) = 160
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 0
params%(10) = 0  : ' type de bulle
params%(11) = 0
params%(12) = 5  : ' départ du bord droit
params%(13) = 380
params%(14) = 120
params%(15) = 10  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 170
params%(3) = 170
params%(4) = 220
params%(5) = 200
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 0
params%(10) = 0  : ' type de bulle
params%(11) = 0
params%(12) = 6  : ' départ du bord bas
params%(13) = 210
params%(14) = 240
params%(15) = 10  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 50
params%(3) = 110
params%(4) = 110
params%(5) = 160
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 0
params%(10) = 0  : ' type de bulle
params%(11) = 0
params%(12) = 7  : ' départ du bord gauche
params%(13) = 10
params%(14) = 130
params%(15) = 10  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))
display
CNV% = dll_call1("FreeCanvas",CNV%)
end_sub

sub Type_1(): ' rectangle arrondi
hdc% = handle_canvas(2)
' CNV% = dll_call2("GetCanvas",object_internal(2),adr(hdc%))
CNV% = dll_call1("GetCanvasFromHandle",handle(2))
params%(2) = 50
params%(3) = 50
params%(4) = 110
params%(5) = 90
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 10  : ' rayon de l'arrondi
params%(10) = 1  : ' type de bulle
params%(11) = 0
params%(12) = 0  : ' départ du coin haut à gauche
params%(13) = 10
params%(14) = 10
params%(15) = 20  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 280
params%(3) = 50
params%(4) = 340
params%(5) = 90
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 10  : ' rayon de l'arrondi
params%(10) = 1  : ' type de bulle
params%(11) = 0
params%(12) = 1  : ' départ du coin haut à droite
params%(13) = 370
params%(14) = 10
params%(15) = 10  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 280
params%(3) = 170
params%(4) = 340
params%(5) = 200
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 10  : ' rayon de l'arrondi
params%(10) = 1  : ' type de bulle
params%(11) = 0
params%(12) = 2  : ' départ du coin bas à droite
params%(13) = 370
params%(14) = 240
params%(15) = 20  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 50
params%(3) = 170
params%(4) = 110
params%(5) = 200
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 10  : ' rayon de l'arrondi
params%(10) = 1  : ' type de bulle
params%(11) = 0
params%(12) = 3  : ' départ du coin bas à gauche
params%(13) = 10
params%(14) = 240
params%(15) = 20  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 170
params%(3) = 50
params%(4) = 250
params%(5) = 90
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 10  : ' rayon de l'arrondi
params%(10) = 1  : ' type de bulle
params%(11) = 0
params%(12) = 4  : ' départ du bord haut
params%(13) = 210
params%(14) = 10
params%(15) = 20  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 280
params%(3) = 110
params%(4) = 340
params%(5) = 160
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 10  : ' rayon de l'arrondi
params%(10) = 1  : ' type de bulle
params%(11) = 0
params%(12) = 5  : ' départ du bord droit
params%(13) = 380
params%(14) = 120
params%(15) = 20  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 170
params%(3) = 170
params%(4) = 220
params%(5) = 200
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 10  : ' rayon de l'arrondi
params%(10) = 1  : ' type de bulle
params%(11) = 0
params%(12) = 6  : ' départ du bord bas
params%(13) = 210
params%(14) = 240
params%(15) = 20  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))

params%(2) = 50
params%(3) = 110
params%(4) = 110
params%(5) = 160
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 10  : ' rayon de l'arrondi
params%(10) = 1  : ' type de bulle
params%(11) = 0
params%(12) = 7  : ' départ du bord gauche
params%(13) = 10
params%(14) = 130
params%(15) = 20  : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))
display
CNV% = dll_call1("FreeCanvas",CNV%)
end_sub

sub Type_2() : ' ellipse
hdc% = handle_canvas(3)
' CNV% = dll_call2("GetCanvas",object_internal(3),adr(hdc%))
CNV% = dll_call1("GetCanvasFromHandle",handle(3))
params%(2) = 50
params%(3) = 110
params%(4) = 110
params%(5) = 160
params%(6) = 1
params%(7) = 0    : ' clBlack
params%(8) = -21  : ' clYellow
params%(9) = 0
params%(10) = 2  : ' type de bulle
params%(11) = 0
params%(12) = 7  : ' départ du bord gauche
params%(13) = 10
params%(14) = 40
params%(15) = 10    : ' largeur de la flèche à la base
res% = dll_call3("DrawOnCanvas",CNV%,6,adr(params%))
display
CNV% = dll_call1("FreeCanvas",CNV%)
end_sub

sub Polygone()
hdc% = handle_canvas(4)
' CNV% = dll_call2("GetCanvas",object_internal(4),adr(hdc%))
CNV% = dll_call1("GetCanvasFromHandle",handle(4))

abscisses%(0) =  30
abscisses%(1) =  80
abscisses%(2) =  40
abscisses%(3) =  200
abscisses%(4) =  180
abscisses%(5) =  250
abscisses%(6) =  200
abscisses%(7) =  60

ordonnees%(0) =  100
ordonnees%(1) =  200
ordonnees%(2) =  250
ordonnees%(3) =  180
ordonnees%(4) =  110
ordonnees%(5) =  120
ordonnees%(6) =  20
ordonnees%(7) =  110

params%(2) = adr(abscisses%)      : ' abscisses des points
params%(3) = adr(ordonnees%)      : ' ordonnées des points
params%(4) = 8                    : ' nombre de points
params%(5) = 0                    : ' ./.
params%(6) = 3                    : ' épaisseur du trait
params%(7) = 0    : ' clBlack    : ' couleur du trait
params%(8) = -21  : ' clYellow    : ' couleur de remplissage
' params%(8) = -99  : ' transparent : ' couleur de remplissage
2d_target_is 4
2d_pen_color 0,0,255
2d_line 1,110,400,110
res% = dll_call3("DrawOnCanvas",CNV%,7,adr(params%))

display
CNV% = dll_call1("FreeCanvas",CNV%)
end_sub

end
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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyJeu 30 Mar 2017 - 23:22

Nouvelle version:
KGF.dll V7.35 du 30/03/2017

Nouveautés:
- DrawOnCanvas action 6 (bulles de texte):
pour les bulles de rectangles arrondis et ellipses, le trait séparant la flèche et la bulle proprement-dite a été supprimée.


Modules modifiés:
KGF.dll

La doc est inchangée. Les sources sont à jour.

C'est bien plus joli comme ça, non ?
KGF_dll - nouvelles versions - Page 6 Aa122

Voici le source (modifié pour afficher les titres uniquement):
Spoiler:

Pour ceux qui sont des matheux:
Le cas de la bulle en forme d'ellipse est intéressant. Comment dessiner cette figure sans le trait de séparation entre la flèche et l'ellipse ? Voici comment j'ai procédé:
Données de départ:
1. coordonnées du point en haut à gauche et ce lui d'en bas à droite du rectangle contenant l'ellipse E
2. coordonnées de la pointe de la flèche P
3. diamètre c de la flèche à sa base
Données dérivées:
4. coordonnées du centre de l'ellipse OO
5. longueur des deux demi-diagonales de l'ellipse a et b
Méthode suivie:
a. calculer l'équation de la droite d1:  P->OO
b. calculer l'orthogonale d2 à d1 en OO
c. trouver deux points P1 et P2 sur d2, équidistants de OO et dont la distance est c
d. calculer l'équation de la droite d3: P->P1
e. calculer l'équation de la droite d4: P->P2
f. calculer les deux intersections de d3 avec E et retenir celle qui est la plus proche de P: point R
f. calculer les deux intersections de d4 avec E et retenir celle qui est la plus proche de P: point S
g. tracer les droites R->P et P->S
h. tracer le segment d'ellipse (arc d'ellipse) de S à R
i. colorier l'intérieur
Et voila. Une dernière info technique: la qualité du dessin de l'arc de l'ellipse semble suffisant pour être "étanche" concernant le "flood_fill" de l'intérieur. Si, pour une dimension quelconque, ceci devait ne plus être le cas, il suffirait de choisir une épaisseur de trait de 2 pixels pour y pallier.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyVen 31 Mar 2017 - 2:23

Klaus a écrit:

Pour ceux qui sont des matheux:
Le cas de la bulle en forme d'ellipse est intéressant. Comment dessiner cette figure sans le trait de séparation entre la flèche et l'ellipse ?


Voici ce que je propose:

Code:

rem ============================================================================
rem                    Bulle elliptique
rem ============================================================================

BulleElliptique(300,200,100,50,60,390,450,50)
BulleElliptique(100,100,50,30,270,270+360-30,50,150)
BulleElliptique(100,300,100,30,0,0+360-30,450,350)
BulleElliptique(500,200,50,80,300,300+360-30,550,400)

end
rem ============================================================================
' La méthode :
' Tracer un arc d'ellipse de l'angle deb à l'angle fin
' Relier ensuite à la pointe de la flèche

' xc,yc  :  Coordonnées du centre de l'ellipse
' a,b    :  Longueurs des 2 demi-axes de l'ellipse ( a horizontal ; b vertical)
' deb,fin :  angles en degrés du début et de la fin du tracé de l'ellipse dans le sens trigonométrique
' xp,yp  : Coordonnées de la pointe de la flèche
' ==============================================================================
' INFO    : Pour déterminer l'angle de la fin, on peut utiliser le calcul suivant :
' fin = deb + 360 - 30 ( la valeur 30 peut être modifiée ; c'est l'ouverture )

SUB BulleElliptique(xc,yc,a,b,deb,fin,xp,yp)
    dim_local angle
    degrees
  '  2d_pen_width 2  : ' pour un tracé pluis épais
' Tracé de l'arc d'ellipse
    2d_poly_from xc + a * cos(deb) , yc - b * sin(deb)
    for angle = deb to fin
        2d_poly_to xc + a * cos(angle) , yc - b * sin(angle)
    next angle
' Liaison à la flèche
    2d_poly_from xc + a * cos(deb) , yc - b * sin(deb)
    2d_poly_to xp,yp : 2d_poly_to xc + a * cos(fin-1) , yc - b * sin(fin-1)
' Remplissage de la figure
    2d_flood xc,yc,255,255,0
END_SUB
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyVen 31 Mar 2017 - 2:41

Joli, Papydall ! To traces l'arc d'ellipse pixel par pixel, selon des coordonnées polaires. C'est futé, et je mets ce code dans ma poche !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyVen 31 Mar 2017 - 11:25

Une légère modification pour afficher un texte dans la bulle.


Code:

rem ============================================================================
rem                    Bulle elliptique
rem                      avec texte
rem ============================================================================

BulleElliptique(300,200,100,50,60,390,450,50,"Hello !")

end
rem ============================================================================
' La méthode :
' Tracer un arc d'ellipse de l'angle deb à l'angle fin
' Relier ensuite à la pointe de la flèche

' xc,yc   :  Coordonnées du centre de l'ellipse
' a,b     :  Longueurs des 2 demi-axes de l'ellipse ( a horizontal ; b vertical)
' deb,fin :  angles en degrés du début et de la fin du tracé de l'ellipse dans le sens trigonométrique
' xp,yp   : Coordonnées de la pointe de la flèche
' t$      : Texte de la bulle
' ==============================================================================
' INFO    : Pour déterminer l'angle de la fin, on peut utiliser le calcul suivant :
' fin = deb + 360 - 30 ( la valeur 30 peut être modifiée ; c'est l'ouverture )

SUB BulleElliptique(xc,yc,a,b,deb,fin,xp,yp,t$)
    dim_local angle,w,h
    font_bold 0 : font_size 0,24 : font_underline 0 : font_italic 0
    w = text_width(t$,0) : h = text_height(t$,0)
    font_color 0,255,0,0 : print_locate xc-w/2 , yc-0.8*h : print t$
    degrees
    2d_pen_width 2  : ' pour un tracé plus marqué
' Tracé de l'arc d'ellipse
    2d_poly_from xc + a * cos(deb) , yc - b * sin(deb)
    for angle = deb to fin
        2d_poly_to xc + a * cos(angle) , yc - b * sin(angle)
    next angle
' Liaison à la flèche
    2d_poly_from xc + a * cos(deb) , yc - b * sin(deb)
    2d_poly_to xp,yp : 2d_poly_to xc + a * cos(fin-1) , yc - b * sin(fin-1)
' Remplissage de la figure
    2d_flood xc,yc,255,255,0
END_SUB
rem ============================================================================


KGF_dll - nouvelles versions - Page 6 Sans_t31
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyVen 31 Mar 2017 - 12:02

Un petit "plus" pour ton code, Papydall:
1. dessine dans un picture au lieu de la form 0, car le dessin dans form 0 est évanescent - place une autre fenêtre devant et enlève-là, et ton dessin a disparu !
2. écris le texte juste à la fin, avec 2d_fill_color de la même couleur que le remplissage de la bulle - les "e" et "o" seront remplis !

Voici:
Code:

rem ============================================================================
rem                    Bulle elliptique
rem                      avec texte
rem ============================================================================

picture 1 : full_space 1
BulleElliptique(1,300,200,100,50,60,390,450,50,"Hello !")

end
rem ============================================================================
' La méthode :
' Tracer un arc d'ellipse de l'angle deb à l'angle fin
' Relier ensuite à la pointe de la flèche

' xc,yc  :  Coordonnées du centre de l'ellipse
' a,b    :  Longueurs des 2 demi-axes de l'ellipse ( a horizontal ; b vertical)
' deb,fin :  angles en degrés du début et de la fin du tracé de l'ellipse dans le sens trigonométrique
' xp,yp  : Coordonnées de la pointe de la flèche
' t$      : Texte de la bulle
' ==============================================================================
' INFO    : Pour déterminer l'angle de la fin, on peut utiliser le calcul suivant :
' fin = deb + 360 - 30 ( la valeur 30 peut être modifiée ; c'est l'ouverture )

SUB BulleElliptique(obj,xc,yc,a,b,deb,fin,xp,yp,t$)
    dim_local angle,w,h
    font_bold obj : font_size obj,24 : font_underline obj : font_italic obj
    w = text_width(t$,obj) : h = text_height(t$,obj)
    print_target_is obj : 2d_target_is obj
'    font_color obj,255,0,0 : print_locate xc-w/2 , yc-0.8*h : print t$
    degrees
    2d_pen_width 2  : ' pour un tracé plus marqué
' Tracé de l'arc d'ellipse
    2d_poly_from xc + a * cos(deb) , yc - b * sin(deb)
    for angle = deb to fin
        2d_poly_to xc + a * cos(angle) , yc - b * sin(angle)
    next angle
' Liaison à la flèche
    2d_poly_from xc + a * cos(deb) , yc - b * sin(deb)
    2d_poly_to xp,yp : 2d_poly_to xc + a * cos(fin-1) , yc - b * sin(fin-1)
' Remplissage de la figure
    2d_flood xc,yc,255,255,0
    2d_fill_color 255,255,0
    font_color obj,255,0,0 : print_locate xc-w/2 , yc-0.8*h : print t$
END_SUB
rem ============================================================================
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyVen 31 Mar 2017 - 17:38

Bravo, Klaus!
C'est beaucoup mieux, ainsi.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 3:22

Nouvelle version:
KGF.dll V7.36 du 01/04/2017

Nouveautés:
- nouvelle fonction: CheckMouseButton

Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sont à jour.

Cette fonction permet de savoir très simplement si le bouton gauche ou le bouton droit de la souris est enfoncé ou non, à l'instant de l'appel de la fonction. Peu importe sur sur quel objet se trouve le curseur, il peut même être en-dehors de l'application. Cette fonction indique juste l'état du bouton visé.

Regardez cette petite démo, et observez la barre de titre. Elle affiche les valeurs de certaines fonctions Panoramic ainsi la valeur de la variable down% (au début du titre) qui est 1 si le bouton gauche est enfoncé, et 0 sinon. Lancez ce programme et promenez le curseur sur la fenêtre (ou ailleurs...) et enfoncez le bouton gauche et relâchez-le. La variable down% va fidèlement refléter l'état du bouton:
Code:
label  tick
dim down%

dll_on "KGF.dll"
picture 11 : full_space 11 : ' on_mouse_move 11,move
timer 1 : timer_interval 1,100 : on_timer 1,tick
end


tick:
  down% = dll_call1("CheckMouseButton",1)
  caption 0,"tick: down%="+str$(down%)+"    mouse_left_down="+str$(mouse_left_down(11))+" mouse_left_up="+str$(mouse_left_up(11))+"  "+str$(mouse_x_position(11))+","+str$(mouse_y_position(11))
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 3:49

Je prends tout de suite !
Laughing
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 5:04

( troisième édition après caprices du forum )

J' ai essayé vite fait car il est tard, ou tôt ce matin.
Cela fonctionne très bien.

Le must, à mon avis et cela n' engage que moi.
Ce serait de récupérer les retours dans un EDIT voir 2 sans le TIMER Panoramic.

Je vois bien un appel comme ceci : 
res%=dll_call4("NomQueTuVeux",act%,handle(Form),Handle(Edit1),Handle(Edit2))

Actions :

1 Mise en service pour le FORM en par1%
2 Arrêt pour le FORM en par1%  ( par2%=0 ; par3%=0)

EDIT 1 retoune l' état de la souris

0, la souris se promène sur le fromage (Up) Laughing
1, le bouton gauche est enfoncé (Left_Down)
2, le bouton droit est enfoncé (Right_Down)

EDIT 2 retourne la position de la souris sur le fromage Laughing

xxxxx,yyyyy

Je ne sais pas faire, mais, comme tu le vois, je ne manque pas d' idées...
lol!

Mieux..., encore plus ouf, les retours de la position dans des variables...avec un paramètre en plus bien sûr

on capte le changement d' état par ON_CHANGE sur l' EDIT et on se sert des deux variables comme des MOUSE_X_POSITION et MOUSE_Y_POSITION valable sur le FORM choisit et ce, quelque soit l' objet survolé.
drunken drunken drunken

Je viens même de trouver un nom pour la fonction :

"MickeyMouseEtSesDeuxOreilles"

lol! lol! lol! lol! lol!

Bon, je sors, je parts en cou.... complètement, il est temps d' aller dormir une heure ou deux... Laughing
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 10:49

Je vois ce que tu veux faire. Maie cela peut se faire beaucoup plus simplement, maintenant:

action 1: ON_MOUSE_MOVE sur la form en question
action 2: OFF_MOUSE_MOVE sur la form en question

dans la routine pour ON_MOUSE_MOVE, utiliser CheckMouseButton pour savoir si le bouton est enfoncé, et les fonctions classiques mouse_x_position et mouse_y_position pour avoir la position. Pas besoin d'un edit avec on_change et de deux variables - tout fonctionne comme ça, sans timer:

Code:
label move
dim down%

dll_on "KGF.dll"
picture 11 : full_space 11 : on_mouse_move 11,move
end


move:
  down% = dll_call1("CheckMouseButton",1)
  caption 0,"tick: down%="+str$(down%)+"  "+str$(mouse_x_position(11))+","+str$(mouse_y_position(11))
  return

Regarde la barre de titre - tu sera bluffé. Je suis en train d'appliquer cela dans un outil que je publierai bientôt, et cela résoud un problème avec lequel je me battais depuis un moment !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 14:56

Non, ce n' est pas cela que je veux faire.
c' est cela :

Code:
label move
dim down%

dll_on "C:\KGF\KGF.dll"
on_mouse_move 0,move

picture 11
height 11,100
width 11,100
top 0,50
left 0,50


 
end


move:
  down% = dll_call1("CheckMouseButton",1)
  caption 0,"tick: down%="+str$(down%)+"  "+str$(mouse_x_position(0))+","+str$(mouse_y_position(0))
  return

sauf que lorsque j' arrive sur le picture, plus de detection.
je veux savoir sur quelles coordonnées d' un form la souris est cliqué que ce soit sur l' oreille gauche ou droite.
d' où l' intérêt de ma bafouille au dessus.
Laughing
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 17:44

Et commeça, ça irait ?
Code:
label move
dim down%, x%, y%, res%

dll_on "KGF.dll"
on_mouse_move 0,move

picture 11 : on_mouse_move 11,move
height 11,100
width 11,100
top 0,50
left 0,50
end

move:
  down% = dll_call1("CheckMouseButton",1)
  res% = dll_call3("GetMousePosition",handle(0),adr(x%),adr(y%))
  caption 0,"tick: down%="+str$(down%)+"  "+str$(x%)+","+str$(y%)
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 18:05

V' la autre chose ! illegal instruction line 15...
scratch
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 18:12

C'est que tu n'as pas la dernière version de la DLL, celle qui implémente la fonction CheckMouseButton...
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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 19:13

Et regarde ceci:
Code:
label move
dim down%, x%, y%, xa%, ya%, res%, hnd%

dll_on "KGF.dll"
on_mouse_move 0,move

picture 11 : on_mouse_move 11,move
height 11,100
width 11,100
top 0,50
left 0,50

memo 22 : left 22,200 : on_mouse_move 22,move
end

move:
  down% = dll_call1("CheckMouseButton",1)
  res% = dll_call3("GetMousePosition",handle(0),adr(x%),adr(y%))
  res% = dll_call2("GetAbsoluteMousePosition",adr(xa%),adr(ya%))
  hnd% = dll_call2("GetObjectUnderPosition",xa%,ya%)
  caption 0,"tick: down%="+str$(down%)+"  "+str$(x%)+","+str$(y%)+"  => "+str$(hnd%)
  return

Pour les objets qui ont un handle (pas le picture !), tu as également le handle permettant de l'identifier. Pour le picture, le handle de la form est retourné.
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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 19:38

De plus en plus fort - avec détection du picture 11:
Code:
label move
dim down%, x%, y%, xa%, ya%, res%, hnd%, s$

dll_on "KGF.dll"
on_mouse_move 0,move

picture 11 : on_mouse_move 11,move
height 11,100
width 11,100
top 0,50
left 0,50

memo 22 : left 22,200 : on_mouse_move 22,move
end

move:
  down% = dll_call1("CheckMouseButton",1)
  res% = dll_call3("GetMousePosition",handle(0),adr(x%),adr(y%))
  res% = dll_call2("GetAbsoluteMousePosition",adr(xa%),adr(ya%))
  hnd% = dll_call2("GetObjectUnderPosition",xa%,ya%)
  s$ = ""
  if x%>=left(11)
    if x%<=(left(11)+width(11)-1)
      if y%>=top(11)
        if y%<=(top(11)+height(11)-1)
          s$ = "picture 11"
        end_if
      end_if
    end_if
  end_if

  caption 0,"tick: down%="+str$(down%)+"  "+str$(x%)+","+str$(y%)+"  => "+str$(hnd%)+"  "+s$
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 6 EmptySam 1 Avr 2017 - 23:07

Je ne sais pas pourquoi mais cela re-fonctionne.

Tu remarquera une chose, c' est que down n' est capté que si la souris bouge pas si elle est statique.

essai de placer ta souris et de cliquer sans la bouger de place... 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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyDim 2 Avr 2017 - 2:22

Mais enfin, c'est normal, puisque tu utilises l'évènement ON_MOUSE_MOVE. Voici une réaction immédiate, même sans movement de la souris:
Code:
label move, down, up
dim down%, x%, y%, xa%, ya%, res%, hnd%, s$

dll_on "KGF.dll"
on_mouse_move 0,move
  on_mouse_down 0,down : on_mouse_up 0,up

picture 11 : on_mouse_move 11,move
  on_mouse_down 11,down : on_mouse_up 11,up
height 11,100
width 11,100
top 0,50
left 0,50

memo 22 : left 22,200 : on_mouse_move 22,move
  on_mouse_down 22,down : on_mouse_up 22,up
end

down:
up:
move:
  down% = dll_call1("CheckMouseButton",1)
  res% = dll_call3("GetMousePosition",handle(0),adr(x%),adr(y%))
  res% = dll_call2("GetAbsoluteMousePosition",adr(xa%),adr(ya%))
  hnd% = dll_call2("GetObjectUnderPosition",xa%,ya%)
  s$ = ""
  if x%>=left(11)
    if x%<=(left(11)+width(11)-1)
      if y%>=top(11)
        if y%<=(top(11)+height(11)-1)
          s$ = "picture 11"
        end_if
      end_if
    end_if
  end_if

  caption 0,"tick: down%="+str$(down%)+"  "+str$(x%)+","+str$(y%)+"  => "+str$(hnd%)+"  "+s$
  return
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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyLun 3 Avr 2017 - 2:50

Nouvelle version:
KGF.dll V7.37 du 03/04/2017

Nouveautés:
- DrawOnCanvas: correction d'un bug avec bulles en format ellipse

Modules modifiés:
KGF.dll

La doc est inchangée. Les sources sont à jour.

Ceci est une correction technique qu touche uniquement le dessin de bulles de texte en forme d'ellipse sur un canvas.

Mais cette version est indispensable pour opérer l'utilitaire "annoter_une_image.bas" que je publie dans la section appropriée.
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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyMar 4 Avr 2017 - 3:58

Nouvelle version:
KGF.dll V7.38 du 04/04/2017

Nouveautés:
- DrawOnCanvas: action 6 (bulles de texte): permettre le fond transparent (couleur -99)

Modules modifiés:
KGF.dll

La doc est inchangée. Les sources sont à jour.

C'était un oubli pour ces bulles de tetxte, alors que pour les autres figures géométriques, c'était bien géré.
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

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 EmptyMer 5 Avr 2017 - 20:55

Nouvelle version:
KGF.dll V7.39 du 05/04/2017

Nouveautés:
- DrawOnCanvas: action 5 (bulles de texte): gérer le cadrage (gauche, centré, droite)

Modules modifiés:
KGF.dll
KGF.dll


La doc et les sources sources sont à jour.

Le bloc de paramètres pour l'action 5 a changé:
- utilisation de l'indice 8 jusqu'à maintenant inutilisé pour paramétrer le type de cadrage:
0=cadrage à gauche 1=centré 2=cadrage à droite
- ajout de l'indice 14 pour indiquer la largeur en pixels de la zone de texte, pour les cadrages 1 et 2

J'ai essayé de faire le cadrage dans Panoramic à l'aide de la fonction TEXT_WIDTH, mais cela s'est avéré impossible. Et donc, je l'ai intégré directement dans DraOnCanvas.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 6 EmptyJeu 6 Avr 2017 - 20:14

2 eme edition ! merci le forum !  bounce

La fonction d' autocompl...(j' ai perdu le nom  Embarassed )
de synedit se refererait elle à la liste des mots-clés du fichier *.chm ?
scratch

C' est pour savoir comment monter mes fichiers chm... Wink
Revenir en haut Aller en bas
Contenu sponsorisé





KGF_dll - nouvelles versions - Page 6 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 6 Empty

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 6 sur 40Aller à la page : Précédent  1 ... 5, 6, 7 ... 23 ... 40  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions
» version instantanée PANORAMIC V 0.9.25i6 du 14/12/2013

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: