IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

GDI: faire une rose des caps


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Par défaut GDI: faire une rose des caps
    Bonjour,

    Je tente de dessiner une rose des caps. Le principe est un cercle avec un tiret tous les 10°
    Mon code donne des angles inégaux. Je ne vois pas pourquoi. Voici le rendu

    Nom : rose.PNG
Affichages : 197
Taille : 9,9 Ko

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    g.DrawEllipse(New Pen(Brushes.White), -350, -350, 700, 700) ' dessine un grand cercle blanc (g As Graphics)
     
    'On ajoute sur le cercle un tiret tous les 10 °
    For Angle_int As Integer = 0 To 360 Step 10
         g.DrawLine(New Pen(Color.White), 0, 350, 0, 300)
         g.RotateTransform(Angle_int) ' on tourne le graphique
    Next
    Je ne vois pas ce qui cloche. Avez-vous une idée ?

    Merci pour votre aide

    Dan

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour
    Graphics.DrawPie(fromage) est je pense ton ami et simpliferias l'existence....
    Voici le code et l'artifice:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    Imports System.Drawing.Drawing2D
     
    Public Class Form1
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            Me.DoubleBuffered = True
        End Sub
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Me.Invalidate()
        End Sub
        Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
            Dim grfx As Graphics = e.Graphics
            Dim x As Single = 0.0
            Dim y As Single = 0.0
            Dim crayon As New Pen(Brushes.White, 2.0)
            Dim brosse As New SolidBrush(Color.Black)
     
            grfx.Clear(brosse.Color)
     
            Dim ellipseA As New Rectangle(x, y, Me.Width, Me.Height)
            grfx.DrawEllipse(crayon, ellipseA) ' dessine un grand cercle blanc (g As Graphics)
     
            'sweepangle est l'increment angulaire en degre..
            'startangle est ton angle de depart qui change à chaque iteration(sens anti-horaire) 
            Dim sweep As Single = 10.0
            For Angle As Integer = 0 To 360 Step 10
                grfx.DrawPie(crayon, ellipseA, Angle, sweep)
                If Angle = 350 Then Exit For ' on sort le dernier secteur est double
            Next
     
            'petit cercle jaune interieur
            Dim ellipseB As Rectangle = ellipseA
            ellipseB.Inflate(-40, -40) ' contracte de 40
            'grfx.DrawEllipse(crayon, ellipseB) ' le dessine et que tu peux supprimer
            grfx.FillEllipse(brosse, ellipseB) ' le "fill" pour cacher le pie central
     
            'warning : dispose des ressources crayon et brosse
            crayon.Dispose()
            brosse.Dispose()
        End Sub
     
        Private Sub Form1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
            Me.Invalidate()
        End Sub
    End Class
    bon code...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Par défaut
    Bonjour,

    merci mais cela ne peux pas convenir dans mon cas. Tous les 5 degrés, le tiret doit être plus court et le fond doit être transparent.

    Merci quand même, le code est intéressant

    Dan

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    je pense qu'il faut faire pivoter le graphique de 10° uniquement à chaque fois, pour avoir un tiret tous les 10° :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            For Angle_int As Integer = 0 To 360 Step 10
                g.DrawLine(New Pen(Color.White), 0, 350, 0, 300)
                g.RotateTransform(10) 'Angle_int) ' on tourne le graphique
            Next

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Par défaut
    Merci c'était exactement cela. Comme quoi travailler tard ne réussit pas.

    Merci pour cette aide précieuse.

    Dan

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Faire une liste des membres ! + trier par ordre !
    Par ghosty dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 01/08/2008, 13h32
  2. faire une somme des cellules d'une selection
    Par prisme7 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2008, 00h23
  3. Réponses: 9
    Dernier message: 18/02/2008, 12h25
  4. Réponses: 4
    Dernier message: 05/06/2006, 12h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo