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

Composants VCL Delphi Discussion :

Perte partielle du contenu d'un TImage


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Inscrit en
    juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut Perte partielle du contenu d'un TImage
    Slt à tous,

    Je developpe actuellement un petit soft, et je tombe sur un problème.

    Pour faire simple, j'ai une interface composée d'un TImage d'arrière plan sur lequel je créer dynamiquement d'autres TImages (qui sont des boutons)

    Problème: le conbtenu de mon TImage de fond est partiellement invisible:


    Alors que je devrait obtenir ça:


    Ca peut venir de quoi??

    Au passage, j'utilise à chaque fois la procédure LoadFromFile pour charger mon bmp, les images sont en autosize, j'ai essayer refresh, repaint et autres, ça marche pas, je sais plus quoi faire!!!

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    mars 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : mars 2005
    Messages : 258
    Points : 551
    Points
    551
    Par défaut
    Salut Gaadek,

    As tu essayé la propriété Stretch???

    Sinon met la à true, celà pourrait forcer l'image à prendre place dans la totalité de ta fenêtre, en effet il se peut que ton image n'est pas exactement les mêmes dimensions que ta fenêtre....

    A plus,

    Christopher

  3. #3
    Membre habitué
    Inscrit en
    juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Bah, dans mon cas, je ne veux pas que l'image prenne la totalité de la fenêtre...

  4. #4
    Membre à l'essai

    Inscrit en
    août 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : août 2004
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    tu as quoi comme composants précisément sur ta forme... Je pense qu'il y a juste quelque chose qui cache ton image... Regarde tes boutons, ils laissent voir un peu de ton arrière plan ! Essaye de faire un "image.repaint" après avoir créé tes composants dynamiquement ca peut être ca aussi !

    DeeTOX.

  5. #5
    Membre habitué
    Inscrit en
    juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Alors, sur la form, en natif, j'ai:
    - un TImage (le fond)
    - un TreeView
    - Un RichEdit
    - 2 TImages (boutons sortie et install) dans des TPanles (ça me permet de les déplacer)

    En dynamique, j'ai juste les boutons 'compression' à 'utilitaires' qui sont des TImages dans des TPanels (pour les déplacer en drag/drop) qui s'autoajustent à l'image.

    Petite précision: lorsque j'ai l'image 1 à l'écran (image de fond tronquée), lorsque je déplace un composant sur les parties masquées, celles-ci réaparaissent (un peu à la manière d'une gomme en inversé)

  6. #6
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2004
    Messages : 447
    Points : 591
    Points
    591
    Par défaut
    Bonjour et bienvenue sur les forums de Developpez.com.
    Ton problème viens plutot des TPanels, la transparence de tes TImages est bien prise en compte. Tu dois utiliser un TPanel qui propose la transparence (disponible dans la jvcl).
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  7. #7
    Membre habitué
    Inscrit en
    juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Slt lil_jam63,

    Je comprends pas trop ton post...

    En effet, j'ai un TPanel en autosize, lequel contient un TImage, également en autosize, qui lui même contient un BMP.

    Donc, le TImage s'ajuste à la taille du BMP, et le TPanel s'ajuste à la taille du TImage, donc pas de soucis de ce coté là.

    Et sur mon image de fond, les parties "cachées" ne sont pas masquées par un autre composant.

    PS: je n'utilise pas de propriété de transparence...

  8. #8
    Membre habitué
    Inscrit en
    juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Si ça peut vous aider, voici le code de mon soft:
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
        // Lecture des propriétés de l'image de fond (TImage existant)
        if ( GetTagValue(Data[-1],'BGIMAGE')<>'' ) then
        begin
          s:=dir + GetTagValue(Data[-1],'BGIMAGE');
          if FileExists(s) then
          begin
            bgPicture.Picture.LoadFromFile(s);
            bgPicture.top:=0;
            bgPicture.left:=0;
            bgPicture.Visible:=true;
          end;
        end;
     
        // Création dynamique des boutons/images
        while (ch <> '') do
        begin
          // Récupère les infos dans un fichier xml
          s:=GetTagValue(ch,'BUTTON');
     
          if (s <> '') then
          begin
            // Créer un nouveau bouton + un nouveau panel
            try
              BtnPict[j].free;  // Libère d'abord l'ancienne image
              Btn[j].free;       // Puis le TPanle qui la contenait
            finally
            end;
     
            // Créer le TPanel
            Btn[j]:=TPanel.Create(Self);
            Btn[j].BevelInner:=bvNone;
            Btn[j].BevelOuter:=bvNone;
            Btn[j].Autosize:=true;
     
            // Créer la TImage
            BtnPict[j]:=TImage.Create(Self);
     
            // Défini l'action OnMouseDown
            BtnPict[j].OnMouseDown:=MouseDownDrag;
     
            // Renomme le controle TImage
            Str(i,s2);
            //Btn[j].Name:='Panelcat'+ s2;
            BtnPict[j].Name:='cat'+ s2;
     
            // Défini le curseur (ce sont des éléments libre, on peut les bouger)
            BtnPict[j].Cursor:=crSizeAll;
     
            // Positionne les controles(juste le panel vu que la TImage est DANS le panel
            Val(GetTagValue(s,'TOP'),k,code);
            Btn[j].Top:=k+2;
            Val(GetTagValue(s,'LEFT'),k,code);
            Btn[j].Left:=k+2;
            BtnPict[j].AutoSize:=true;
     
            // Charge un bmp dans la TImage
            s2:=dir+AnsiDequotedStr(GetTagValue(s,'BITMAP'),'"');
            if not FileExists(s2) then
            begin
              s2:='"'+s2+'" not found';
              Application.MessageBox(PChar(s2), 'File error', MB_OK + MB_ICONHAND);
              Application.Terminate;
            end
            else begin
              BtnPict[j].Picture.LoadFromFile(s2);
              BtnPict[j].Parent:=Btn[j];
              Btn[j].Parent:=Self;
            end;
     
            // Affiche les controles
            Btn[j].Visible:=true;
            BtnPict[j].Visible:=true;
          end;

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/12/2011, 12h15
  2. Perte partielle de l'autocomplétion sous Visual C++ 2005 Express
    Par Niko_de_bordo dans le forum Visual C++
    Réponses: 1
    Dernier message: 27/04/2010, 16h59
  3. [AC-2000] Affichage partiel du contenu d'un champ
    Par etoileetoile dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 23/10/2009, 12h20
  4. Perte de données contenu dans un formulaire
    Par GLSpirit dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 27/08/2009, 00h31
  5. effacer le contenu du composant Timage
    Par kroma23 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/12/2008, 11h26

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