begin process at 2012 02 11 11:55:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > DESSINER UNE ELLIPSE INCLINÉE

DESSINER UNE ELLIPSE INCLINÉE


 Information sur la source

Note :
4 / 10 - par 1 personne
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :ellipse, rotation, incliner, incliné Niveau :Débutant Date de création :28/03/2007 Date de mise à jour :28/03/2007 14:29:07 Vu / téléchargé :7 499 / 454

Auteur : daddycool76

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Bonjour,
Cette source permet de dessiner une ellipse et de l'incliner.
(La méthode circle permet de dessiner une ellipse mais pas de l'incliner)
La source originale se trouve a cette adresse : http://vb-helper.com/howto_draw_ellipse_transforma tion.html
Je l'ai légérement modifié de façon à la rendre plus facile d'utilisation.
@ +



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

28 mars 2007 14:29:07 :
.......

 Sources du même auteur

Source avec Zip CHRONOMETRE AVEC DETECTEUR EXTERNE
Source avec Zip NOMBRE CYCLOMATIQUE, RECHERCHE DE BOUCLES FERMÉS

 Sources de la même categorie

Source avec une capture GRAPH PHP COURBE DE CHARGE par s.defaye
Source avec Zip Source avec une capture BOULE DE CRISTAL par BLUEBIBUBBLE
VB6 - DÉPLACEMENT D'UN CONTRÔLE SUR UN SEGMENT DE DROITE DÉL... par ucfoutu
Source avec Zip Source .NET (Dotnet) APPLICATION DE DESSIN par fsafsafsaf
Source avec Zip Source avec une capture Source .NET (Dotnet) MERGEIMAGES par Le Pivert

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) MATRICE DE ROTATION, QUATERNION ET 3D par CGSI3
Source avec Zip Source avec une capture FAIRE UN CUBE EN 3D ET LE FAIRE TOURNER SANS UTILISER DIRECT... par zulrigh
Source avec Zip Source .NET (Dotnet) REPRESENTATION GRAPHIQUE D'UN MOT par ShayW
Source avec Zip Source avec une capture Source .NET (Dotnet) AFFICHER UN TEXTE OU DES RECTANGLES, ELLIPSES, POLYGONES, ET... par kbalist
Source avec Zip Source avec une capture Source .NET (Dotnet) ROTATION D'ÉCRAN par Willi

Commentaires et avis

Commentaire de Renfield le 28/03/2007 14:55:09 administrateur CS

ça c'est la version matheuse.

via API, on utiliserai (entre autres)
SetWorldTransform
Ellipse

Commentaire de daddycool76 le 29/03/2007 07:02:38

Bonjour Renfield,
Avec cet api (je pense) on peut appliquer une rotation à une bitmap.
Or si tu dessines plusieurs formes dans une picturebox avec les méthode line ou circle comment fais-tu pour n'incliner qu'un seul des éléments déssinés ?

@ +

Commentaire de Renfield le 29/03/2007 08:25:26 administrateur CS

tu retourne ton plan, tu dessine l'eclipse, tu remet tout en ordre.
paré pour une nouvelle eclipse ^^

Commentaire de Renfield le 29/03/2007 09:06:05 administrateur CS

mais ta version 'matheuse' est très bien ainsi ^^

Commentaire de daddycool76 le 29/03/2007 09:13:40

ok sympa, Merci pour les infos !!!
Le problème de cette source est qu'elle n'est pas trés optimisée niveau vitesse.
ta méthode devrai être bien plus rapide :)
@ +

Commentaire de Renfield le 29/03/2007 09:53:12 administrateur CS

cette lenteur relative ne viens pas que de ta facon de dessiner...
c'est un tout.

la precision est très importante, dejà... ca fait beaucoup de calculs pour des points que tu ne verra pas...

j'ai raccourci un peu ton code :


Option Explicit

Private Type POINTF
    X As Single
    Y As Single
End Type

Private nPoints As Long
Private xnPoints() As POINTF

Private Sub Form_Load()
    Picture1.AutoRedraw = False

    UpDown1(0).Max = CLng(Picture1.Width)
    UpDown1(1).Max = CLng(Picture1.Height)
    UpDown1(0).Value = CLng(Picture1.Width / 2)
    UpDown1(1).Value = CLng(Picture1.Height / 2)
    UpDown1(2).Value = 100
    UpDown1(3).Value = 40
    UpDown1(4).Value = 0
    UpDown1(5).Value = 360
    UpDown1(6).Value = 5
    UpDown1(7).Value = 10
    
    Text1(0).Text = UpDown1(0).Value & " pix"
    Text1(1).Text = UpDown1(1).Value & " pix"
    Text1(2).Text = UpDown1(2).Value & " pix"
    Text1(3).Text = UpDown1(3).Value & " °"
    Text1(4).Text = UpDown1(4).Value & " °"
    Text1(5).Text = UpDown1(5).Value & " °"
    Text1(6).Text = UpDown1(6).Value / 10
    Text1(7).Text = UpDown1(7).Value & " °"
    
    Picture1.Refresh
End Sub

Private Sub TraiterPoint(ByVal Index As Long, ByVal theta As Single, ByVal AngleRot As Single, ByVal Rapport As Single, ByVal Rayon As Single, ByVal CentreX As Single, ByVal CentreY As Single)
Dim new_x As Single
Dim new_y As Single
Dim X As Single
Dim Y As Single
    X = Rayon * Cos(theta)
    Y = Rayon * Sin(theta) * Rapport
    
    new_x = X * Cos(AngleRot) + Y * Sin(AngleRot)
    new_y = X * Sin(AngleRot) - Y * Cos(AngleRot)
        
    xnPoints(nPoints).X = new_x + CentreX
    xnPoints(nPoints).Y = new_y + CentreY
End Sub

Private Function DessinerEllipse(CentreX As Single, CentreY As Single, Rayon As Single, AngleRot As Single, AngleDep As Single, AngleFin As Single, Rapport As Single, Precision As Single)
Const PI As Single = 3.1415926535
Dim X As Single
Dim Y As Single
Dim theta As Single
Dim DTHETA As Single
Dim i As Long
    DTHETA = Precision * PI / 180

    If nPoints = 0 Then
        For theta = AngleDep * PI / 180 To DTHETA + AngleFin * PI / 180 Step DTHETA
            ReDim Preserve xnPoints(nPoints)
            TraiterPoint nPoints, theta, AngleRot * PI / 180, Rapport, Rayon, CentreX, CentreY
            nPoints = nPoints + 1
        Next theta
    End If
    
    If nPoints Then
        Picture1.CurrentX = xnPoints(0).X
        Picture1.CurrentY = xnPoints(0).Y
        
        For i = 1 To nPoints - 1
            Picture1.Line -(xnPoints(i).X, xnPoints(i).Y)
        Next i
    End If
End Function

Private Sub Picture1_Paint()
    DessinerEllipse UpDown1(0).Value, UpDown1(1).Value, UpDown1(2).Value, UpDown1(3).Value, UpDown1(4).Value, UpDown1(5).Value, UpDown1(6).Value / 10, UpDown1(7).Value
End Sub

Private Sub UpDown1_Change(Index As Integer)
    Select Case Index
        Case 0
            Text1(Index).Text = UpDown1(Index).Value & " pix"
        Case 1
            Text1(Index).Text = UpDown1(Index).Value & " pix"
        Case 2
            Text1(Index).Text = UpDown1(Index).Value & " pix"
        Case 3
            Text1(Index).Text = UpDown1(Index).Value & " °"
        Case 4
            Text1(Index).Text = UpDown1(Index).Value & " °"
        Case 5
            Text1(Index).Text = UpDown1(Index).Value & " °"
        Case 6
            Text1(Index).Text = UpDown1(Index).Value / 10
        Case 7
            Text1(Index).Text = UpDown1(Index).Value & " °"
    End Select

    nPoints = 0
    Picture1.Refresh
End Sub


 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

rotation d'une ellipse (une 2 fois) [ par bouchiki ] comment faire pivoter une ellipse avec angle qlqonque rotation d'une ellipse [ par bouchiki ] salut, je n'arrive pas a faire pivoter une ellipse qui est dessiner dans le code par circle(x,y),r....ect 3D rotation caméra [ par Radiohead4ever ] RadioHead4Ever Création ellipse [ par Darhyl ] Bonjour a tous ! Voila j'aimerai créer un menu avec des boules tournants autour d'une ellipse. Pour le moment je n'arrive qu'a créer un cercle. Qqun Test de collision cercle et ellipse [ par cheyenne ] Bonjour à Tous, Pour faire un test de collision avec des objets carrés ou rectangulaires.j'utilise en général l'API IntersectRect.Mais mon problème Rotation régulière une image [ par YPMN ] slt!j'ai bien vu des sources présentants des images rotées... mais pas comme je l'ententd. c'est - à - dire, une image présentant une une roue ou pneu menu click droit [ par liaram ] salut. je veux activer le bouton droit dans une ellipse que je dessine dans un canvas voila le code (c# et wpf)Ellipse E = new Ellipse();ContextMenu c directX --> interception clavier + empecher rotation [ par icornato ] Salut à tousJ'ai quasiment fini de développer mon appli : VB.net + directX.2 petites choses qui m'embetent : --> j'intercepte le clavier dans le pr Rotation d'un Sous-Formulaire [ par fikophil ] Bonjour,  avec l'arrivée des écrans 16/9 ( WideScreen ), il serait intéressant d'utiliser la largeur et abandonner le style classique "en hauteur" ave


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales