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

Delphi Discussion :

Dessiner des regions rectangulaires avec rotation


Sujet :

Delphi

  1. #1
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut Dessiner des regions rectangulaires avec rotation
    Re-Bonjour à tous,

    Concernant mon projet de ligne électrique,
    (cf:http://http://www.developpez.net/forums/showthread.php?t=215038)

    Il m'est venu l'idée de la créer à l'aide de régions, pour faciliter la détection.

    Seulement je n'arrive pas à tracer une région rectangulaire oblique...
    Avec la fonction:
    CreateRectRgn(p1, p2, p3, p4 : integer)
    le rectangle est droit,

    Et avec les fonctions pour créer des polygones, rien ne s'affiche à l'écran..

    Voici mon code de création d'une région polynomiale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    R1[0] := CreatePolyPolygonRgn(Points, PtCounts, 3, WINDING);
      Canvas.Brush.Style := bssolid;
      Canvas.Brush.Color := clRed;
      FillRgn(GetWindowDC(handle), R1[1] , Canvas.Brush.Handle );
    Je suis perdu avec de concept de régions...Donc toutes les aides sont les bienvenues.

    Merci à tous.

    @+.
    For crying out loud !

  2. #2
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    je suis peut-être à coté...
    si tu veux manupuler une forme quelconque, tu travailles en tableau de points que tu vas joindre avec polyline et tu effectues une rotation de ton tableau de points.
    je me suis fait des outils pour ça, je regarde et je reposte.
    a+

  3. #3
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    ci-joint une routine de rotation de tableau de points:

    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
     
    procedure rotationarraypoint(xo,yo:integer;tetadeg:real;ptarray:array of Tpoint;canvas:tcanvas);
    var i:integer;
        teta:real;
        Rayon:array of integer;
        fi:array of real;
    begin
    setlength(Rayon,high(ptarray)+1);
    setlength(fi,high(ptarray)+1);
    teta:=pi*tetadeg/180;
    for i:=low(ptarray) to high(ptarray) do begin
    if ptarray[i].x-xo<>0 then
    fi[i]:=arctan2(ptarray[i].y-yo,ptarray[i].x-xo)
    else fi[i]:=-pi/2;
    Rayon[i]:=round(sqrt(sqr(ptarray[i].x-xo)+sqr(ptarray[i].y-yo)));
    ptarray[i].x:=Round(xo+Rayon[i]*cos(teta+fi[i]));
    ptarray[i].y:=Round(yo+Rayon[i]*sin(teta+fi[i]));
    end;
    canvas.Polyline(ptarray);
    end;
    voilà, si ça peut te rendre servive.
    j'en ai d'autres dans ce style là pour faire des disques gradués etc
    mais là, c'est pas ton problème...

    a+

  4. #4
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    Merci Archimède,

    Je me servirais surement de cette application pour mon programme (car de toute facon je devrais gerer le zoom et la rotation de ma ligne )

    J'ai bien un tableau de points, mais mon problème c'est que je doit pouvoir créer un nouveau segment sur cette ligne (et donc un nouveau point )avec un clic de la souris, et le déplacer à volonter.

    C'est pour ça que je voulais utiliser les régions, car elles intègrent directement une fonction de détection.
    Mais je vais peut-être me résigner à employer le tracage et un calcul de détection.

    En tout cas merci, je te recontact dès que j'ai besoin de fonctions d'affichage.

    @+.
    For crying out loud !

  5. #5
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    de rien,j'avais déjà utilisé des régions pour gérer des collisions mais ça fait déjà un moment...
    il faudrait se replonger dans le truc.
    mais ici, il ya des pointures qui vont sûrement t'aider
    à ton service

  6. #6
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 14
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Bonjour,

    Il y a quelques années j'ai fait un logiciel de gestion de réseau téléphonique et de représention et conception de celui-ci.

    J'avais utiliser des panels posés dans un scrollbox et des lignes (polyligne) entre chacun de ces panels.

    Je pouvait donc utiliser le drag&drop pour déplacer mes répartiteurs (panels) et une fonction me permettait (shift + click) me permettait d'ajouter un répartiteur à la position du click suite à quoi une boite de dialogue permettait d'enrichir celui-ci de ces paramètres
    - nombre de paire entre ce REP et un autre à sélecvtionner dans la liste
    - etc

    pour gérer une cassure sur un cable afin de clarifier le schéma le click droit sur le répartiteur de départ ou d'arrivée posait un nouveau panel au milieu de mes deux panels la souris était positionnée dessus et l'utilisateur n'avait plus qu'a le déposer à sa position.

    Voilà l'idée de l'époque les régions n'existant pas.
    a+
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

Discussions similaires

  1. dessiner des demi-sphère avec GLU?
    Par milena dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 19/03/2009, 00h14
  2. Dessiner des points avec PyQt
    Par Naoli dans le forum PyQt
    Réponses: 1
    Dernier message: 15/01/2008, 18h38
  3. Dessiner avec rotation un bitmap
    Par Andry dans le forum Delphi
    Réponses: 6
    Dernier message: 04/05/2007, 15h15
  4. Dessiner des objets plus complexes avec OpenGL
    Par Premium dans le forum OpenGL
    Réponses: 18
    Dernier message: 21/11/2006, 17h55
  5. Class de gestion des images avec rotation
    Par Johnny Boy dans le forum MFC
    Réponses: 1
    Dernier message: 03/05/2005, 11h54

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