Echelle

[Résolu]
Signaler
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009
-
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
-
Bonjour a tous,

Dans une precedente question j avais besoin de redimentionner une picture box avec l affichage de point qui devait aller de 0,003 a 100, on ma conseiller de multip par mille ainsi 0,003 devient 3,

PB d affichage effectivement le 100 devient 100000 et donc ne tien pas das ma picture box pour pallier a mon probleme j ai fait :

PictureBox1.Width =

Me.Width
PictureBox1.Height =
Me.Height
coefx = sx / PictureBox1.Width
coefy = sx / PictureBox1.Height

avec sx distance max de mes point en x et sy en y, du cout j applique mon coef :
e.Graphics.FillEllipse(b, xcenter + (x / coefx) - height, ycenter - (y / coefy) - height, width, width)

jusquela tout bon, maintenant mon probleme c que je manque de precision car je trace un cercle d un diam D = 0,004, 

        mes           nom            D
X   -22.0040   -22.0000     0.0040   
 Y   -12.1000   -12.1000     0.0040   

dans ce cas  je devrai avoir mont de centre mes sur mon diametre de centre nom et D = 0,004 pour pallier a ca on me conseille une echelle log et j avoue que la je suis un peu perdu, je comprend le principe mais je ne vois pas comment le mettre en appli.

8 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Je ne connais pas les syntaxes de VB.Net...et ignore quel est l'équivalent, en VB.Net, du PaintPicture de VB6 (il doit exister, j'en suis à peu près certrain)
Mais, quoi qu'il en soit,  tu peux toujours utiliser (méthode qui marchera quel que soit le langage de développement) la fonction strechtblt de la librairie GDI32 de l'API de Windows (exemple dans API-GUIDE), dont la vocation est précisément de copier tout ou partie de  l'image d'une pictureBox dans tout au partie d'une autre une autre pictureBox, tout en adaptant la copie (stretch) aux dimensions de la surface d'accueuil. !


Si donc tu ne vois pas sous VB.Net quelle peut être la fonction ou la méthode à adopter pour y parvenir, tourne-toi vers la fonction StrechtBlt de l'API de Window. Regarde comment (API-GUIDE) on l'utilise sous VB6, en gardant à l'esprit que, pour VB.Net, il faudra typer en Integer tout ce que tu verra typé en Long pour une utilisation sous VB6, y compris la valeur retournée par la fonction elle-même.
Messages postés
46
Date d'inscription
samedi 25 mars 2006
Statut
Membre
Dernière intervention
7 juin 2007

Bonjour, je vais essayer de t'expliquer. Le principe est donc de représenter sur tes axes avec la même longueur des valeurs différences, dans ton cas et pour simplifier, tu pourrait représenter les valeurs v sur x et y comme suit
0 <= v <=0.01
0.01<= v <=0.1
0.1<=  v <=1, donc en fonction de la valeur de v, les longuer en x et y sont multipliées.1<v <10
10<= v <= 100ainsi si tu choisis 2 cm comme unité de x et y pour une v 4 aurait une valeur en x (4*2)/10 soit 0.8 cm
c'est la même valeur si v = 40 c'est le principe des échelles log.

Pour ton code, il faut donc tester la valeur de v pour y appliquer le coef qui va bien et ensuite, c'est un pb de changement de repère pour pacer tes points.

Je pense ne pas être assez clair mais j'espère que cela t'aidera.

Bonne journée

MAXIMO71
PS Si la réponse vous satistait
pensez à la valider
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Je vois en ce qui me concerne les choses plus simplement, exactement comme avec une feuille de papier !

Cas A
Si l'on veut absolument  rester dans le précision de représentation que l'on a choisie, il n'y a pas de secret et l'on est dans l'un de ces deux cas :

- cas 1 : le nombre maximum d'unités de plus petite valeur (en heuteur et en largeur) est inférieur ou égal au nombre maximum de points "physiquement représentables" sur la feuille (en hauteur et en largeur) et c'est bon
- cas 2 : s'il y a un débordement  dans un sens ou dans l'autre pour représenter physiquement la totalité de mes points on n'a dans ce cas aucun autre recours que celui de choisir une feuille de papier plus grande ou d'ajouter du papier...(celà se traduit par une picturebox de dimensions plus grandes que celles du container dans laquelle on la place ... et qu'on doit alors faire dérouler pour tout voir)

Cas B :

On ne veut surtout pas agrandir la feuille de dessin et dans ce cas, c'est la précision qu'il faudra consentir à sacrifier, par des arrondissements des coordonnées à représenter, arrondissements tels que le nombre d'unités les plus petites unités à représenter soit inférieur ou égal (en hauteur et en largeur) au nombre maximum de points "physiquement représentables" (en hauteur et en largeur) sur la feuille.

Tout celà se traduit (exactement comme avec une feuille de papier) par des calculs arithmétiques de 1er noveau.

La technique de codage (donc l'aspect informatique) n'interviendrait ici (et celà n'a plus rien à voir avec les calculs de représentation) que pour ecrire les instructions nécessaires pour faire dérouler (si l'on a choisi cette solution) dans un container une picturebox de dimensions plus grandes que celles du container dans laquelle on l'a placée. Les exemples de scrolling à mettre en place pour y parvenir ne manquent alors pas sur ce forum.

Voilà.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Une autre solution consisterait à dessiner sur une picturebox invisible de dimensions calculées pour pouvoir y représenter tous les points avec leur précision élevée et d'afficher le résultat dans une picturebox plus petite en appliquant un "stretching" (en utilisant la fonction StretchBlt de l'Api de Windows, par exemple)...
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

Bonjour,

je pense que je vais essayer la derniere soluce, je vous tiens informer mais merci tous ceci ma fort aider a me mettre sur la bonne voi.
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

Bonjour,

je pense que je vais essayer la derniere soluce, je vous tiens informer mais merci tous ceci ma fort aider a me mettre sur la bonne voi.
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

Bonjour,

je pense que je vais essayer la derniere soluce, je vous tiens informer mais merci tous ceci ma fort aider a me mettre sur la bonne voi.
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

mais comment fai tu pour afficher le contenu d  une picture box dans une autre? passez par tobitmap?