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.
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.
ce n'est pas vrai.
Envoyé par CreateDIBPatternBrushPt
Merci beaucoup pour la suggestion concernant l'API. J'ai essayé ceci:
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 ?
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;
et en utilisant le TCanvas, ca doit etre plus simple:
je n'ai pas testé le code, mais tu devrait t'en sortir en faisant un truc ressemblant à ca.
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;
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;
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;
Partager