alex1496
Messages postés10Date d'inscriptionlundi 9 février 2004StatutMembreDernière intervention 1 mars 2007
-
15 févr. 2007 à 00:02
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024
-
16 févr. 2007 à 12:28
Je n'arrive pas à "retranscrire" l'ancienne fonction scale de la picturebox de vb6 en vb2005. Je travaille sur le tracage de figure géométrique quelconque.
Le forme est trancrit dans une variable de type pointF. Mon soucis est que je peux avoir des points négatif ou positif. Je souhaite tracer ma forme dans une picturebox , l'ajuster (modifier l'echelle pour un meilleur rendu) et la centrer dans la picturebox.
Comment fait on pour redéfinir les coordonnés sans redéfinir un tableau de type pointF avec les modifications
Le début de mon code :
<hr size="2" width="100%" />
Public Sub Charge_section(ByVal fichier As String, ByRef tableau() As PointF)
'Chargement d'un fichier texte dans un tableau
Dim pt_x, pt_y As Double
Dim nb_entree As Integer = 0
Dim numfile As Integer
'Numéro fichier libre
numfile = FreeFile()
'Lecture
FileOpen(numfile, fichier, OpenMode.Input)
'Charge les données du fichier dans le tableau
While Not EOF(numfile)
ReDim Preserve tableau(nb_entree)
Input(numfile, pt_x)
Input(numfile, pt_y)
tableau(nb_entree) = New PointF(pt_x, pt_y)
nb_entree += 1
End While
FileClose(numfile)
End Sub
<hr size="2" width="100%" />
Structure extreme
Dim xmin As Double
Dim xmax As Double
Dim ymin As Double
Dim ymax As Double
End Structure
<hr size="2" width="100%" />
Function Extrem_section(ByVal tableau() As PointF, ByRef extrem As extreme)
For i As Integer = 0 To tableau.GetUpperBound(0)
If extrem.xmin > tableau(i).X Then extrem.xmin = tableau(i).X
If extrem.xmax < tableau(i).X Then extrem.xmax = tableau(i).X
If extrem.ymin > tableau(i).Y Then extrem.ymin = tableau(i).Y
If extrem.ymax < tableau(i).Y Then extrem.ymax = tableau(i).Y
Next i
End Function
<hr size="2" width="100%" />
Sub Centre_section(ByVal extrem As extreme, ByVal Picturebox As PictureBox)
'Centre une section
Dim Lx, Ly As Double
'Emprise du dessin
Lx = Math.Abs(extrem.xmax - extrem.xmin)
Ly = Math.Abs(extrem.ymax - extrem.ymin)
'bordure
Dim esp As Double
esp = Math.Max(Lx, Ly) / 5
Dim ech As Double
ech = Picturebox.Width / Picturebox.Height
Dim Lpic_x, Lpic_y As Double
Dim Lpic As extreme
If ech >= Lx / Ly Then
Lpic_y = Ly + esp
Lpic_x = Lpic_y * ech
Else
Lpic_x = Lx + esp
Lpic_y = Lpic_x / ech
End If
End Sub
<hr size="2" width="100%" />
Public Sub Trace_section(ByVal tableau() As PointF, ByVal picturebox As PictureBox)
'Trace une image à partir d'un tableau
'Valeur extreme
Dim extrem As extreme
Call Extrem_section(tableau, extrem)
info("xmin", extrem.xmin)
info("xmax", extrem.xmax)
info("ymin", extrem.ymin)
info("ymax", extrem.ymax)
'Redimensionnement
'Dimension de a picturebox
Dim largeur As Integer = picturebox.Width
Dim hauteur As Integer = picturebox.Height
'Créer une image en fonction de la picturebox
Dim img As Bitmap = New Bitmap(largeur, hauteur)
Dim graph As Graphics = Graphics.FromImage(img)
alex1496
Messages postés10Date d'inscriptionlundi 9 février 2004StatutMembreDernière intervention 1 mars 2007 15 févr. 2007 à 21:59
Bien tout cela est bien mais déja je comprends pas forcement tout mais surtout je rapelle ma question :
"Je n'arrive pas à "retranscrire" l'ancienne fonction scale de la picturebox de vb6 en vb2005. Je travaille sur le tracage de figure géométrique quelconque.
Le forme est trancrit dans une variable de type pointF. Mon soucis est que je peux avoir des points négatif ou positif. Je souhaite tracer ma forme dans une picturebox , l'ajuster (modifier l'echelle pour un meilleur rendu) et la centrer dans la picturebox.
Comment fait on pour redéfinir les coordonnés (origine, hauteur, largeur) sans redéfinir un tableau de type pointF avec les modifications"