Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Rundes Image Bitmap (https://www.delphipraxis.net/110191-rundes-image-bitmap.html)

Blackheart 14. Mär 2008 13:27


Rundes Image Bitmap
 
Hallo Leute !
Ich würde gern auf ein Image Bitmap mit Canvas eine Kreis ziehen und den Rest dann mit einer Farbe füllen also das sozusagen ein Rundes Bild zu sehen ist mit farbigen Rahmen.
Nun bräucht Ich mal einen Ansatzpunkte wie das gehen könnte.
Den Kreis zeichnen ist nicht das Problem.

patti 14. Mär 2008 13:45

Re: Rundes Image Bitmap
 
Ich hätte ne Idee, wie du es machen könntest. Ist aber vielleicht etwas umständlich. Erstelle dir ein Bitmap mit der Breite und der Höhe von deinem Bitmap aus dem Image. Fülle es dann komplett mit der gewünschten Farbe. Danach malst du den Kreis auf die Canvas und füllst diesen mit einer anderen Farbe (z.B. clfuchsia). Das Bitmap machst du dann transparent und wählst als TransparentColor eben deine Kreis-Farbe (clFuchsia). Dieses Bitmap musst du nur noch auf das aus dem Image malen und dem Image das Ergebnis zuweisen. Schon hast du diesen Rahmen. Hoffe, ich hab dich richtig verstanden und ich konnte dir weiterhelfen ;-)

Patti

Blackheart 14. Mär 2008 16:09

Re: Rundes Image Bitmap
 
Erst mal Danke für den Ansatz, das klappt auch relativ gut nur
das Ich jetzt noch das Problem mit dem zusammenfügen der beiden
Bitmaps hab.
Vieleicht hat da wer noch einen Tip.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
 var
  Rect:TRect;
begin
  BMP1:=TBitmap.Create;
  BMP1.Width:=300;
  BMP1.Height:=300;
  BMP1.LoadFromFile('C:\front.bmp');

  BMP:=TBitmap.Create;
  BMP.PixelFormat := pf24Bit;
  BMP.Canvas.Brush.Color:=clYellow;
  BMP.Width:=300;
  BMP.Height:=300;
  BMp.Transparent:=True;
  BMP.TransparentColor:=clFuchsia;

  BMP.Canvas.Pen.Width:=2;
  BMP.Canvas.Brush.Color:=clFuchsia;
  BMP.Canvas.Pen.Color:=clblack;
  BMP.Canvas.Ellipse(200,0,0,200);

  Bmp.SaveToFile('C:\test.bmp');
  Image1.Picture.Bitmap.Assign(BMP);
end;

bitsetter 14. Mär 2008 18:42

Re: Rundes Image Bitmap
 
Zitat:

Zitat von patti
Das Bitmap machst du dann transparent und wählst als TransparentColor eben deine Kreis-Farbe (clFuchsia). Dieses Bitmap musst du nur noch auf das aus dem Image malen und dem Image das Ergebnis zuweisen.;-)

Hallo,

wäre doch logisch, dass du das Bild mit dem farbigen Rahmen auf das andere Bild rauf zeichnest. :stupid:
Delphi-Quellcode:
 
  BMP1:=TBitmap.Create;
  BMP1.LoadFromFile('C:\front.bmp');

  BMP:=TBitmap.Create;
  BMP.PixelFormat := pf24Bit;
  BMP.Canvas.Brush.Color:=clYellow;
  BMP.Width:= BMP1.Width;
  BMP.Height:= BMP1.Height;
  BMP.Transparent:=True;
  BMP.TransparentColor:=clFuchsia;

  BMP.Canvas.Pen.Width:=2;
  BMP.Canvas.Brush.Color:=clFuchsia;
  BMP.Canvas.Pen.Color:=clblack;
  BMP.Canvas.Ellipse(1, 1, BMP.Width, BMP.Height);
  bmp1.Canvas.Draw(0 , 0, Bmp);//Bild auf das andere rauf zeichnen
  bmp1.SaveToFile('C:\test.bmp');

  Image1.Picture.Bitmap.Assign(BMP1);
  bmp.Free;
  bmp1.Free;

Blackheart 14. Mär 2008 19:36

Re: Rundes Image Bitmap
 
Danke Euch beiden, hier wird Dir geholfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz