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

API, COM et SDKs Delphi Discussion :

remplir une région avec un bitmap


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Par défaut remplir une région avec un bitmap
    Bonjour,

    Je voudrais remplir une région (HRgn) avec un bitmap. FillRgn ne convient pas, car il marche avec une brush et celle-ci ne peut être supérieure à 8x8 pixels.
    Qulequ'un aurait-il une idée? Merci.

  2. #2
    Membre Expert Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Par défaut
    ce n'est pas vrai.
    Citation Envoyé par CreateDIBPatternBrushPt
    Windows 95: Creating brushes from bitmaps or DIBs larger than 8x8 pixels is not supported. If a larger bitmap is specified, only a portion of the bitmap is used.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Par défaut
    Merci beaucoup pour la suggestion concernant l'API. J'ai essayé ceci:

    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
    var
      Form1: TForm1;
      Brush1 : HBrush;
      Bitmap1: TBitmap;
      Rgn1 : HRGN;
     
    procedure TForm1.Button5Click(Sender: TObject);
    begin
     Bitmap1 := TBitmap.Create;
     Bitmap1 := Image1.Picture.Bitmap;
     Brush1 := CreateDIBPatternBrushPt(@Bitmap1, DIB_RGB_COLORS);
     Rgn1 := CreateEllipticRgn(100, 35, 0, 120);
     FillRgn(Image2.Canvas.Handle, Rgn1, Brush1);
     Image2.Invalidate;
     DeleteObject(Rgn1);
    end;
    Mais je n'ai pas de résultat: la région n'est pas remplie avec le bitmap. Y aurait il une erreur dans mon code ?

  4. #4
    Membre Expert Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Par défaut
    et en utilisant le TCanvas, ca doit etre plus simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
    Form1: TForm1;
    Bitmap1: TBitmap;
     
    procedure TForm1.Button5Click(Sender: TObject);
    begin
    Bitmap1 := Image1.Picture.Bitmap;
    Image2.Canvas.Brush.Bitmap := Bitmap1;
    image2.Canvas.Ellipse(100,35,0,120,0,0);
    image2.Canvas.Brush.Bitmap := nil;
    end;
    je n'ai pas testé le code, mais tu devrait t'en sortir en faisant un truc ressemblant à ca.

  5. #5
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Citation Envoyé par guillemouze Voir le message
    et en utilisant le TCanvas, ca doit etre plus simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
    Form1: TForm1;
    Bitmap1: TBitmap;
     
    procedure TForm1.Button5Click(Sender: TObject);
    begin
    Bitmap1 := Image1.Picture.Bitmap;
    Image2.Canvas.Brush.Bitmap := Bitmap1;
    image2.Canvas.Ellipse(100,35,0,120,0,0);
    image2.Canvas.Brush.Bitmap := nil;
    end;
    je n'ai pas testé le code, mais tu devrait t'en sortir en faisant un truc ressemblant à ca.
    Suivant ton code, j'ai retouché un peu et testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var
      Form1: TForm1;
      Bitmap1: TBitmap;
    begin
      Bitmap1 := Image1.Picture.Bitmap;
      Image2.Canvas.Brush.Bitmap := Bitmap1;
      image2.Canvas.Ellipse(100,35,0,120); // 4 paramètres seulement ;-)
      image2.Canvas.Brush.Bitmap := nil;
    end;

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 932
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 932
    Par défaut
    Il y a aussi SelectClipRgn .

    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
    procedure TForm1.FormPaint(Sender: TObject);
    var
      Bmp :TBitmap;
      Rgn :hRGN;
     
    begin
      Bmp := TBitmap.Create;
      try
        Bmp.LoadFromFile('Image.bmp');
     
        Rgn := CreateEllipticRgn(100, 35, 0, 120);
     
        if Rgn <> 0 then
        begin
          SelectClipRgn(Canvas.Handle, Rgn);
     
          Canvas.Draw(0, 0, Bmp);
     
          SelectClipRgn(Canvas.Handle, 0);
          DeleteObject(Rgn);
        end;
      finally
        Bmp.Free;
      end;
    end;

Discussions similaires

  1. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 15h31
  2. Remplir une ListView avec une BD
    Par manikou dans le forum MFC
    Réponses: 1
    Dernier message: 17/05/2005, 09h48
  3. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29
  4. Réponses: 2
    Dernier message: 26/07/2004, 13h34
  5. remplir une table avec UTL_FILE.GET_LINE
    Par delphim dans le forum SQL
    Réponses: 9
    Dernier message: 12/03/2004, 10h15

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