Public Sub drawHorizontalRegle(ByVal zoomValue As Integer, ByVal widthActuelleImg As Integer) Dim penRegles As New Pen(Color.Black, 1) Dim fontRegles As New Font("Arial", 8) Dim bitmapRegleHorizontale As New Bitmap(CInt((widthActuelleImg * zoomValue) / 100), 16) Dim NewGraphic As Graphics = Graphics.FromImage(bitmapRegleHorizontale) NewGraphic.DrawLine(penRegles, 0, 15, 10000, 15) '1ere ligne horizontale en bas de la règle Dim typeRegle As Integer = 1 Dim pasAafficher As Integer 'A caster en String pour l'afficher plus tard 'pas des traits selon le zoom '/!\ Changés en single !! Dim grandeBarreTousLes As Single = (zoomValue * 50) / 100 '50px à zoom 100% Dim moyenneBarreTousLes As Single = (zoomValue * 10) / 100 '10px à zoom 100% Dim petiteBarreTousLes As Single = (zoomValue * 5) / 100 '5px à zoom 100% Select Case zoomValue 'test le zoom pour connaitre le type de règle...avec des traits petits ou moyens ou grands ou un mélange de tout ça Case 1 'si le zoom est à 1% typeRegle 1 : pasAafficher 5000 grandeBarreTousLes = (zoomValue * 5000) / 100 moyenneBarreTousLes = (zoomValue * 1000) / 100 petiteBarreTousLes = (zoomValue * 500) / 100 Case 2 typeRegle 2 : pasAafficher 2000 grandeBarreTousLes = (zoomValue * 2000) / 100 moyenneBarreTousLes = (zoomValue * 1000) / 100 petiteBarreTousLes = (zoomValue * 500) / 100 Case 3 typeRegle 3 : pasAafficher 2000 grandeBarreTousLes = (zoomValue * 2000) / 100 moyenneBarreTousLes = (zoomValue * 1000) / 100 petiteBarreTousLes = (zoomValue * 200) / 100 Case 4 typeRegle 4 : pasAafficher 1000 grandeBarreTousLes = (zoomValue * 1000) / 100 petiteBarreTousLes = (zoomValue * 200) / 100 Case 5, 6 typeRegle 3 : pasAafficher 1000 grandeBarreTousLes = (zoomValue * 1000) / 100 moyenneBarreTousLes = (zoomValue * 500) / 100 petiteBarreTousLes = (zoomValue * 100) / 100 Case 7, 8, 9 'si le zoom est de 7% ou 8% ou 9% typeRegle 4 : pasAafficher 500 grandeBarreTousLes = (zoomValue * 500) / 100 petiteBarreTousLes = (zoomValue * 100) / 100 Case 10 To 15 'si le zoom est entre 10% et 15% inclus typeRegle 1 : pasAafficher 500 grandeBarreTousLes = (zoomValue * 500) / 100 moyenneBarreTousLes = (zoomValue * 100) / 100 petiteBarreTousLes = (zoomValue * 50) / 100 Case 16 To 24 typeRegle 2 : pasAafficher 200 grandeBarreTousLes = (zoomValue * 200) / 100 moyenneBarreTousLes = (zoomValue * 100) / 100 petiteBarreTousLes = (zoomValue * 50) / 100 Case 25 To 31 typeRegle 3 : pasAafficher 200 grandeBarreTousLes = (zoomValue * 200) / 100 moyenneBarreTousLes = (zoomValue * 100) / 100 petiteBarreTousLes = (zoomValue * 20) / 100 Case 32 To 49 typeRegle 4 : pasAafficher 100 grandeBarreTousLes = (zoomValue * 100) / 100 petiteBarreTousLes = (zoomValue * 20) / 100 Case 50 To 63 typeRegle 3 : pasAafficher 100 grandeBarreTousLes = (zoomValue * 100) / 100 moyenneBarreTousLes = (zoomValue * 50) / 100 petiteBarreTousLes = (zoomValue * 10) / 100 Case 64 To 99 typeRegle 4 : pasAafficher 50 grandeBarreTousLes = (zoomValue * 50) / 100 petiteBarreTousLes = (zoomValue * 10) / 100 Case 100 To 159 typeRegle 1 : pasAafficher 50 grandeBarreTousLes = (zoomValue * 50) / 100 '50px à zoom 100% moyenneBarreTousLes = (zoomValue * 10) / 100 '10px à zoom 100% petiteBarreTousLes = (zoomValue * 5) / 100 '5px à zoom 100% Case 160 To 249 typeRegle 2 : pasAafficher 20 grandeBarreTousLes = (zoomValue * 20) / 100 moyenneBarreTousLes = (zoomValue * 10) / 100 petiteBarreTousLes = (zoomValue * 5) / 100 Case 250 To 319 typeRegle 3 : pasAafficher 20 grandeBarreTousLes = (zoomValue * 20) / 100 moyenneBarreTousLes = (zoomValue * 10) / 100 petiteBarreTousLes = (zoomValue * 2) / 100 Case 320 To 499 typeRegle 4 : pasAafficher 10 grandeBarreTousLes = (zoomValue * 10) / 100 petiteBarreTousLes = (zoomValue * 2) / 100 Case 500 To 639 typeRegle 3 : pasAafficher 10 grandeBarreTousLes = (zoomValue * 10) / 100 moyenneBarreTousLes = (zoomValue * 5) / 100 petiteBarreTousLes = zoomValue / 100 Case 640 To 1599 typeRegle 4 : pasAafficher 5 grandeBarreTousLes = (zoomValue * 5) / 100 petiteBarreTousLes = zoomValue / 100 Case 1600 To 3199 typeRegle 5 : pasAafficher 2 grandeBarreTousLes = (zoomValue * 2) / 100 petiteBarreTousLes = zoomValue / 100 Case Is >= 3200 'si le zoom est supérieur ou égal à 3200% typeRegle 6 : pasAafficher 1 grandeBarreTousLes = zoomValue / 100 End Select Dim ActualLenght As Integer = 0 Dim NbGrandeBarre As Integer = 0 Dim NbMoyenneBarre As Integer = 0 Dim NbPetiteBarre As Integer = 0 Dim multiplicateurPasG As Integer = 0 While ActualLenght <= widthActuelleImg If ActualLenght = CInt(NbGrandeBarre * grandeBarreTousLes) Then NewGraphic.DrawLine(penRegles, ActualLenght, 0, ActualLenght, 16) NewGraphic.DrawString(Str(pasAafficher * multiplicateurPasG), fontRegles, Brushes.Black, ActualLenght, -2) multiplicateurPasG = multiplicateurPasG + 1 NbGrandeBarre += 1 NbMoyenneBarre += 1 NbPetiteBarre += 1 ElseIf (typeRegle 1 Or typeRegle 2 Or typeRegle = 3) AndAlso ActualLenght = CInt(NbMoyenneBarre * moyenneBarreTousLes) Then NewGraphic.DrawLine(penRegles, ActualLenght, 9, ActualLenght, 16) NbMoyenneBarre += 1 NbPetiteBarre += 1 ElseIf Not typeRegle 6 AndAlso ActualLenght CInt(NbPetiteBarre * petiteBarreTousLes) Then NewGraphic.DrawLine(penRegles, ActualLenght, 12, ActualLenght, 16) NbPetiteBarre += 1 End If ActualLenght += 1 End While Pic.Image = bitmapRegleHorizontale End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question