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 :

Dimensionné le TPaintBox suivant la résolution de l'écran !


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut Dimensionné le TPaintBox suivant la résolution de l'écran !
    Bonjour à toutes et à tous,

    Je n'arrive pas a faire en sorte que mon Tpaintbox (PbScreen) prenne toute la form suivant la résolution de l'écran, le but est de charger des images de Noël dans un fichier ressource et d'animer un nombre de boule de Noël.

    Dans le Oncreate voici le code utilisé :

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
     BmpFond := TBitmap.Create;
     
     //Chargement des images représentant le background 
      if Fchoix.rg1.itemindex = 6 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond');
     
      If Fchoix.rg1.itemindex = 0 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond1');
     
      If Fchoix.rg1.itemindex = 1 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond2');
     
      If Fchoix.rg1.itemindex = 2 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond3');
     
      If Fchoix.rg1.itemindex = 3 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond4');
     
      If Fchoix.rg1.itemindex = 4 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond5');
     
      If Fchoix.rg1.itemindex = 5 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond6');
     
      BmpInvisible := TBitmap.Create;
      BmpImage1 := TBitmap.Create;
      BmpImage2 := TBitmap.Create;
      BmpImage3 := TBitmap.Create;
      BmpImage4 := TBitmap.Create;
      BmpImage5 := TBitmap.Create;
     
     //Background
      BmpFond.Width := Pbscreen.Width;
      BmpFond.Height := Pbscreen.Height;
     
      BmpInvisible.Assign(BmpFond) ;
     
     //Chargement des images représentant des boules de Noël
      BmpImage1.LoadFromResourceName(hinstance, 'Corine');
     
      BmpImage2.LoadFromResourceName(hinstance, 'Robert');
     
      BmpImage3.LoadFromResourceName(hinstance, 'Patrick');
     
      BmpImage4.LoadFromResourceName(hinstance, 'Jean');
     
      BmpImage5.LoadFromResourceName(hinstance, 'Madeleine');
     
      W := Bmpimage1.width;
      H := Bmpimage1.height;
     
      BmpImage1.Transparent := True;
      BmpImage1.TransParentColor := BmpImage1.canvas.pixels[1, 1];
      BmpImage2.Transparent := True;
      BmpImage2.TransParentColor := BmpImage2.canvas.pixels[1, 1];
      BmpImage3.Transparent := True;
      BmpImage3.TransParentColor := BmpImage3.canvas.pixels[1, 1];
      BmpImage4.Transparent := True;
      BmpImage4.TransParentColor := BmpImage4.canvas.pixels[1, 1];
      BmpImage5.Transparent := True;
      BmpImage5.TransParentColor := BmpImage5.canvas.pixels[1, 1];
     
      // initialisation
      xx1 := 1;
      yy1 := 1;
      x1 := trunc(xx1);
      y1 := trunc(yy1);
      vx1 := 1.5;
      vy1 := 0.5;
      NewRect1 := bounds(x1, y1, W, H);
      OldRect1 := NewRect1;
     
      xx2 := 200;
      yy2 := 100;
      x2 := trunc(xx2);
      y2 := trunc(yy2);
      vx2 := 1.5;
      vy2 := 0.5;
      NewRect2 := bounds(x2, y2, W, H);
      OldRect2 := NewRect2;
     
      xx3 := 80;
      yy3 := 280;
      x3 := trunc(xx3);
      y3 := trunc(yy3);
      vx3 := 1.5;
      vy3 := 0.5;
      NewRect3 := bounds(x3, y3, W, H);
      OldRect3 := NewRect3;
     
      xx4 := 350;
      yy4 := 250;
      x4 := trunc(xx4);
      y4 := trunc(yy4);
      vx4 := 1.5;
      vy4 := 0.5;
      NewRect4 := bounds(x4, y4, W, H);
      OldRect4 := NewRect4;
     
      xx5 := 550;
      yy5 := 350;
      x5 := trunc(xx5);
      y5 := trunc(yy5);
      vx5 := 1.5;
      vy5 := 0.5;
      NewRect5 := bounds(x5, y5, W, H);
      OldRect5 := NewRect5;
    End;
    Merci d'une éventuelle solution.

    @+,

    Cincap

  2. #2
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Bonjour,

    Je n'arrive pas a faire en sorte que mon Tpaintbox (PbScreen) prenne toute la form suivant la résolution de l'écran...
    Est-ce bien ceci que tu désires faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.FormCreate(Sender: TObject);
      begin
      Form1.BorderStyle := bsNone;
      Form1.WindowState := wsMaximized;
      PaintBox1.Align   := alClient;
    end;
     
    procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton; 
    Shift: TShiftState; X, Y: Integer);
      begin
      Close;
    end;

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut
    Bonjour à toutes et à tous,

    @ Caribensila, merci de ta réponse, mon TPaintBox est déjà en "alclient" mais l'image affichée ne le remplit pas et l'animation se limite à la zone de l'image affichée.

    Cela fait déjà un moment que je cherche !

    C'est bien dans le code proposé qu'il faut agir.

    @+,

    Cincap

  4. #4
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Excuse-moi. J'avais mal compris la question.

    Essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      //Background
      //BmpFond.Width := Pbscreen.Width;
      //BmpFond.Height := Pbscreen.Height;
      //BmpInvisible.Assign(BmpFond) ;
      BmpInvisible.Width  := Pbscreen.ClientWidth;
      BmpInvisible.Height := Pbscreen.ClientHeight;
      BmpInvisible.Canvas.StretchDraw(BmpFond);
     
    Non testé.

  5. #5
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Citation Envoyé par Caribensila Voir le message
    Excuse-moi. J'avais mal compris la question.

    Essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      //Background
      //BmpFond.Width := Pbscreen.Width;
      //BmpFond.Height := Pbscreen.Height;
      //BmpInvisible.Assign(BmpFond) ;
      BmpInvisible.Width  := Pbscreen.ClientWidth;
      BmpInvisible.Height := Pbscreen.ClientHeight;
      BmpInvisible.Canvas.StretchDraw(BmpFond);
     
    Non testé.
    Ca serait plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      BmpInvisible.Canvas.StretchDraw(BmpInvisible.Canvas.ClipRect,BmpFond);
    Bonne chance !

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut
    Bonjour à toutes et à tous,

    @ Caribensila et mick605, désolé, fonctionne pas et pourtant déjà testé.

    Je ne pense pas qu'il y a une solution avec ce type de code et le TPaintBox.

    Merci pour l'aide,

    @+,

    Cincap

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut
    Je viens de refaire un test en changeant directement le fond1 de la ressource avec ma résolution de mon écran (en mettant mon image en 1600x900) et c'est correct avec le code par défaut :

    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
     
     BmpFond := TBitmap.Create;
     
       if Fchoix.rg1.itemindex = 6 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond');
     
      If Fchoix.rg1.itemindex = 0 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond1'); //içi en 1600x900 dans le fichier *.rc
     
      If Fchoix.rg1.itemindex = 1 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond2');
     
      If Fchoix.rg1.itemindex = 2 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond3');
     
      If Fchoix.rg1.itemindex = 3 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond4');
     
      If Fchoix.rg1.itemindex = 4 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond5');
     
      If Fchoix.rg1.itemindex = 5 then
      BmpFond.LoadFromResourceName(hinstance, 'Fond6');
     
      BmpInvisible := TBitmap.Create;
      BmpImage1 := TBitmap.Create;
      BmpImage2 := TBitmap.Create;
      BmpImage3 := TBitmap.Create;
      BmpImage4 := TBitmap.Create;
      BmpImage5 := TBitmap.Create;
     
      BmpFond.Width := Pbscreen.Width;
      BmpFond.Height := Pbscreen.Height;
     
      BmpInvisible.Assign(BmpFond) ;
    Donc l'idéal c'est de pouvoir changer l'affichage de la ressource depuis une détection de la résolution de l'écran donc avant chaque chargement de l'image " BmpFond.LoadFromResourceName(hinstance, 'Fond1'); "

    @+,

    Cincap

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/04/2014, 22h17
  2. changer de style suivant la résolution
    Par figatelliSTI dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/05/2008, 14h59
  3. Adapter page suivant la résolution de l'écran
    Par sandykoala dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/02/2007, 18h41
  4. taille des frame suivant résolution de l'écran
    Par chti_juanito dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 25/04/2006, 16h17
  5. [CSS]Aligner les div suivant la résolutation d'écran
    Par nebule dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 09/09/2005, 12h00

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