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 :

[débutant] probleme de définition de classe


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Par défaut [débutant] probleme de définition de classe
    Bonjour à tous,

    J'ai fais quelques projets sur Delphi mais j'ai toujours des problème de conpréhension sur les classes.

    Dans mon projet je veux faire tourner une image selon la valeur d'un angle...
    J'ai trouvé un tutoriel qui m'a bien aidé.

    L'image que je veux faire tourner se trouve sur la Form3. J'aimerais lancer la procédure Rotate depuis un thread.
    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
     
    procedure Rotate(angle: integer);
    var
      RadAngle: extended;
      SinAngle, CosAngle: extended;
      CenterX, CenterY: extended;
      X, Y: extended;
      Xi, Yi: integer;
      i, j: integer;
      c: TColor;
    begin
      RadAngle := angle * pi / 180;
      SinAngle := sin(RadAngle);
      CosAngle := cos(RadAngle);
      CenterX := Form3.Bitmap.Width div 2;
     
      CenterY := Form3.Bitmap.Height div 2;
     
      for i := 0 to Pred(Form3.RotatedBitmap.Width) do
        for j := 0 to Pred(Form3.RotatedBitmap.Height) do
          begin
            X := (j - CenterY) * SinAngle + (i - CenterX) * CosAngle + CenterX;
            Y := (j - CenterY) * CosAngle - (i - CenterX) * SinAngle + CenterY;
            Xi := Round(X);
            Yi := Round(Y);
            c := Form3.Bitmap.Canvas.Pixels[Xi, Yi];
            if (c = -1) then c := ClWhite	;
            Form3.RotatedBitmap.Canvas.Pixels[i, j] := c;
          end;
    end;
    Ce code fonctionne a merveille dans l' unité3(attaché a la from3). Je change de place ce code pour le mettre dans mon thread.

    Et là c'est le drame!!
    Il me dis que Bitmap, RotatedBitmap ne sont pas reconnu. Dans l'unité 3 il y a aussi ca comme code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure TForm3.FormCreate(Sender: TObject);
    begin
      Bitmap := TBitmap.Create;
      RotatedBitmap := TBitmap.Create;
      Bitmap.LoadFromFile('ETface.bmp');
      RotatedBitmap.LoadFromFile('EtFace.bmp');
    end;
    Alors je suppose que cela défini Bitmap come un TBitmap...
    Comment je peu remplacer ce code dans mon thread pour que Bitmap et rotatedBitmap soit défini?

    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    Est-ce que tu as bien ajouté l'unité dans laquelle se trouve Form3 dans les uses de l'unité de ton thread?
    PS: fais attention à la synchronisation!
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Par défaut
    oui l'unité3 est défini dans les uses de mon thread

    En fait mon problème c'est ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure TForm3.FormCreate(Sender: TObject);
    begin
      Bitmap := TBitmap.Create;
      RotatedBitmap := TBitmap.Create;
      Bitmap.LoadFromFile('ETface.bmp');
      RotatedBitmap.LoadFromFile('EtFace.bmp');
    end;
    qui se trouve dans l'unité3 (pas le thread) je doit le laisser dans l'unité3? car je fais appelle à bitmap dans mon thread.

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 937
    Billets dans le blog
    6
    Par défaut
    sont-ils bien définis en public ou published dans TForm3 ?
    sinon, ils ne sont pas accessibles en dehors de l'unité
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre chevronné Avatar de Bejaia-In
    Inscrit en
    Avril 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 365
    Par défaut
    Tu dois déclarer "Bitmap" et "RotatedBitmap" comme des variable globales, juste avant la section "implementation" de l'unité d'où tu appelle le thread.
    Puis tu feras appelle à ces variables directement (sans le Form3.)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Par défaut
    merci pour les réponses. En effet je n'avais pas mis Bitmap et RotatedBitmap en public
    Merci beaucoup

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

Discussions similaires

  1. [débutant]probleme de définition
    Par colocolo dans le forum Méthodes
    Réponses: 5
    Dernier message: 01/12/2008, 21h57
  2. [Débutant]Probleme Classes
    Par brv1guizmo dans le forum C#
    Réponses: 6
    Dernier message: 08/05/2008, 16h17
  3. [débutant] probleme avec une classe arbre
    Par go_all_in dans le forum C++
    Réponses: 17
    Dernier message: 08/06/2006, 10h33
  4. Probleme de lecture de classe
    Par wkd dans le forum Composants
    Réponses: 5
    Dernier message: 21/05/2004, 15h20
  5. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 18h21

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