French Dessinez c'est pas gagné!

alea46

Member
Licensed User
Bonjour, je travaille actuellement sur un programme qui doit dessiner le tracé d'un engin agricole dans un champs. Je n'ai pas de soucis sur la partie GPS, les Topics du forum sont largement suffisant.

Par contre sur la partie dessin, j'ai un Probleme :
*comment dessinez sur un bmp de 1000x1000 avec un focus sur la partie que l'on dessine (mobile en fonction de la position GPS), sachant que lorsque l'on va repasser à coté, on va revoir la trace de son dessin.

Merci de votre aide, j'ai un peu de mal pour comprendre l'organisation de la doc et si la connaissance de Framework aide vraiment pour la prog.

pour info, on doit redessinez toute les secondes environ....(message 1HZ : traitement info, dessin)
 

klaus

Expert
Licensed User
Longtime User
Salut Albert,

Peux-tu être plus précis sur ce que tu veux faire.
Quel genre de dessin, lignes figures etc. ?
Le bitmap doit-il être sauvé ?

Je n'ai pas encore réalisé de programme dessinant sur un bitmap, mais ça pourrait être intéressant de s'y atteler. Afficher une vue partielle d'un bitmap plus grand que l'écran n'est pas un problème, déjà réalisé (programme Map display).

L'utilisation des librairies ImageLib et/ou dzImage sera nécessaire.

Salutations.
 

alea46

Member
Licensed User
merci Klauss

Merci beaucoup Klauss.
Je vais etudier de prés ton programme, mais il m'a l'air de convenir assez bien pour mon besoin.
Dans quelques jours, j'espere pouvoir poster le debut de mon soft.

Bonne fin de WE.
 

alea46

Member
Licensed User
dessinez, c'est presque gagné

Grâce à l'aide de Klauss (merci beaucoup encore), j'ai réussi à faire un dessin avec scrolling comme je le voulais.

je joint le source et le fichier de test issue d'une conversion de trace.

Les améliorations que je souhaite sont les suivantes :
*suppression des barres de scrolling tout en gardant la gestion.
*dessin en polygone plein
* si on repasse sur une partie déjà colorée, on change la couleur de la zone de recoupement.

j'ai pu constaté que la connaissance de framework aide au dev.

merci de vos idées pour améliorer mon soft
 

klaus

Expert
Licensed User
Longtime User

alea46

Member
Licensed User
Flood fill KO

Bon, j'ai réussi à faire marcher le floodfill grâce aux bons conseil de KLAUS.
Le problème, qui était déjà annoncé dans le post, c'est le problème de mémoire.
(et de lenteur).

Une petite question : les programmes compilés sont-ils plus rapide que les programmes en debug?

Je n'ai pas encore fait l'investissement de la version et donc pas fait de test sur PPC (asus 730 et Asus 620BT).

Une question : est-ce que l'on peu changer la largeur du pinceau.
CF le permet à priori. Comment peut-on faire avec Basic4PPC?


Un grand merci à KLAUS pour son aide.

Sub floodFill(xi,yi,colfil,colpix)
'Fill the selected area
If xi < 0 OR xi >= maxsize-1 Then Return
If yi < 0 OR yi >= maxsize-1 Then Return
If colfil = colpix Then Return 'avoid endless loop
' call the library to do the fill and save the result
Image1.image = flood.Fill(Image1.Image, xi, yi, colfil, colpix)
End Sub


appel de la routine
drw1.DrawLine(pen1.Value,londeb+dlon,latdeb-dlat,lonact+dlon,latact-dlat) '// 2
'essai de floodfill
If A1>1 Then
colorback =image1.Color
floodFill(londeb-8,latdeb-8,cred,colorback)
End If
image1.Refresh
A1=A1+1

'positionnement de la fenetre sur le milieu de l'affichage
 

klaus

Expert
Licensed User
Longtime User

alea46

Member
Licensed User
bon, un premier test sur Asus 730 montre :
*un problème de mémoire sur une image de plus de 1000*1000.
*un pb sur le pnl1VScrollobj.New1(false) ' objectDoor lib
(erreur: NullreferenceExeption)
*impossible de connecter le GPS (bluethooth), mais la c'est certainement moi, car le pgm "GPS" fonctionne.

Bon je vais voir les pbs du a l'écran VGA et à la taille du bitmap.
ajouter la routine de mise en forma QVGA, verif du code pour GPS, optimisation de la mémoire dispo.
Si quelqu'un à une idée sur l'optimisation du code, je suis preneur....
 

alea46

Member
Licensed User
Toujour pas de solution pour mon probleme

Bonjour à Tous.

J'ai essayé d'avancer sur mon problème. Avec la bibliothèque ControlEx.dll pour les scrollbars, car je ne peux utiliser la bib Door.dll.

J'ai modifié le source, mais je ne vois pas où cela coince.
En lisant les différents post sur le forum, je constate que je ne suis pas le seul dans ce cas.

Les scrollbars gérées par Door.dll ne sont pas forcement une solution, car elles ne fonctionnent pas sur PPC, ce qui est très gênant pour le cas d'un soft qui doit generer du soft sur PPC.

je poste le zip du projet dans l'état actuel...
 

Attachments

  • Guidage_GPS2.zip
    25.5 KB · Views: 327

klaus

Expert
Licensed User
Longtime User
Bonjour,

Voiçi la solution.

Les problèmes étaient les suivants.

1) Les ScrollBars étaient cachés par le Panele1 et l'Image1, avec un BringToFront on aurait pu les rendre visible.

2) Il n'est pas nécessaire d'avoir les ScrollBars sur le Panel1 on peut les mettre directement sur frmMain.

3) Il faut modifier les paramètres Left et Top de Image1 en fonction des valeurs des ScrollBars, ce n'est plus automatique comme avec l'AutoScroll du Panel1 au par avant.

4) La valeur max des ScrollBars est maxsize-Panel1.Width et maxsize-Panel1.Height.

La version modifée est jointe.

Meilleures salutations.
 

Attachments

  • GUIDAGE_GPcontrolexSNEW.sbp
    6.5 KB · Views: 308

alea46

Member
Licensed User
Merci,c'est gagne

Merci Klaus.:sign0188:

Je dois avouer que je doutais d'y arriver, car apres des essais avec les exemple de scrolling, les scrollbar... etc..., je ne voyais plus de solutions.
De plus, je ne connais pas framework, et cela est handicapant je pense pour les dev.

Merci encore mille fois.
:sign0060:
 

alea46

Member
Licensed User
Et si je m'y remettais....

Bonjour à tous,
Après presque un an d'absence sur le forum (sauf quelques visu rapide), je reviens à la charge :sign0060: pour essayer de faire évoluer mon soft.

Les questions qui me vienne aujourd'hui à l'esprit et sur lesquelles vous pourriez m'apporter de l'aide sont :
* Existe-t-il un guide assez simple pour expliquer les base de CF, (panel,contener, picturebox...), ceci afin de m'éclaircir les idées.:sign0012:
* Existe-t-il un moyen de diminuer le poids d'un Bitmap lors de l'utilisation sur Basic4PPC, sachant que dans mon but, le nombre de couleur est très accessoire (4 couleurs seraient amplement suffisant.)

Je pense que je vais voir le soft de Klauss sur les Maps pour m'inspirer dans un premier temps....
 

klaus

Expert
Licensed User
Longtime User
Bonjour alea46,

Question1:
Est-ce que CF veur dire Compact Framwork, si oui je n'y connais pas grand chose et je ne connais pas non plus de guide. La seule documentation que j'utilise est celle de Microsoft. Pour y accéder j'utilise ce petit utilitaire qui permet d'arriver assez rapidement dans les pages voulues. http://www.b4x.com/forum/share-your-creations/3299-control-info.html

Question2:
A ma connaissance les bitmaps sont stockées dans B4PPC en interne avec 24 bits par pixel et il n'y a pas de moyen de diminuer la taille.

Concernant les cartes, il y a le programme http://www.b4x.com/forum/share-your-creations/3674-scaled-maps.html qui est plus récent que Display Maps et utilise les dernières librairies.

Meilleures salutations.
 
Last edited:

alea46

Member
Licensed User
Nouvelle version

Bonjour,
je suis actuellement entrain de modifier mon programme :
Utilisation des bibliotheques de Agraham (super) pour faire le remplissage.
Utilisation de plusieurs "dalle" de façon à éviter les problèmes de mémoire (le programme réel, utilisant les coordonnées GPS en temps réel, plante régulièrement à cause de la mémoire).

Mon problème aujourd'hui, c'est la partie chargement/déchargement des dalles pour le dessin.

Dans la Sub routine gestion image, le but et de sauvegarder le bmp actuel (que l'on nommera par la variable dalact, et charger (si elle exite, vierge sinon) la dalle nommée dalnew.
Mon probleme c'est celui ennoncé dans le thread
http://www.b4x.com/forum/questions-help-needed/3317-image-locking.html#post18740

Et je n'arrive pas a m'en sortir!!!
Help!!
 

alea46

Member
Licensed User
voila le resultat

Voici le résultat avec l'utilisation de dalle afin de minimiser l'utilisation de mémoire.
 

alea46

Member
Licensed User
Fonction search = souvent la solution

Bonjour,

Oui, j'ai constaté que je n'étais pas le seul avec ce problème.
Avec un peu de patience pour explorer quelques pistes et l'utilisation fréquente de la fonction "search", on peut avoir des réponses.

J'avais fait un essai dans le même sens avec un deuxième bmpex, mais cela ne marchait pas, car je ne le recréais pas à chaque fois et de ce fait, le pgm plantait.
(visiblement la méthode "dispose" correspond à la destruction de l'objet...)
 

alea46

Member
Licensed User
Une nouvelle version.

Bonjour,

Je viens de faire une nouvelle version de mon petit logiciel, avec un découpage en "dalle" du dessin, ceci afin de minimiser la mémoire nécessaire pour faire tourner le programme.
Sur PC, avec le fichier (j'ai toujours deux version, une Pc avec un fichier simulant les entrées GPS et une PPc avec le Gps), çà marche bien. Le problème, c'est avec le PPC, dans des conditions réelle : le programme tourne bien 1 à 2 minute, puis "freeze."
Un Hard reset est souvent nécessaire pour faire repartir le PPc.

Est-ce que quelqu'un à déjà eu le problème de freeze sur un PPC avec un pgm maison .

Je joins les deux versions, avec notamment dans la version "file", un petit pgm d'assemblage de dalle pour création sur Pc du résultat.

Merci de me donner votre avis sur ce qui ne va pas dans ce pgm.
J'espere que c'est solutionnable.
 
Top