![]() |
Abgerundete Ecken
Hallo zusammen,
ich lade mit einem TImage-Objekt ein Bild und stelle das auf der Oberfläche dar. Hierzu möchte ich dieses Objekt mit definierbaren abgerundeten Ecken darstellen. Es ist sowas wie das Canvas.RoundRect(). Aber wenn ich diese Funktion anschließend anwende, dann wird ein weißes Rechteck mit abgerundeten Ecken auf mein geladenes Bild gezeichnet. Ich möchte aber, dass das Bild selbst die abgerundeten Ecken hat. Hoffe ihr könnt mir helfen. Gruß, Moony |
Re: Abgerundete Ecken
ein Bitmap mit dem Bild
ein Bitmap mit einem weißen roundRect und weiß gefüllt, der Rest schwarz beide Bitmap and verknüpfen und ausgeben |
Re: Abgerundete Ecken
Irgendwie verstehe ich nciht ganz wie ich die beiden verknüpfen soll? Könntest du mir da ein wenig Code hinschreiben?
|
Re: Abgerundete Ecken
Delphi-Quellcode:
Sollte so gehen.
BitBlt(MaskBitmap.Canvas.Handle, 0, 0, MaskBitmap.Width, MaskBitmap.Height, DeineBitmap.Canvas.Handle, 0, 0, SRCAND);
|
Re: Abgerundete Ecken
Die beiden TImage-Objekte werden zwar jetzt verbunden, aber die Ecken des eigentlichen Bildes sind noch da. Ich möchte auch keinen schwarzen Rand haben, sondern lediglich bei dem Bild das ich lade die Ecken rund zeichnen mit einem bestimmten Radius.
|
Re: Abgerundete Ecken
|
Re: Abgerundete Ecken
Liste der Anhänge anzeigen (Anzahl: 1)
Erst mal Sorry, dass ich hier so lange keine Antwort gegeben habe.
Also irgendwie will das bei mir nicht funktionieren mit den runden Ecken. Ich stelle mal den Code hier rein, damit ihr euch ein Bild davon machen könnt, was ich meine. Also, ich habe ein Bild geladen, welches auf die vorgesehene Größe des Images geladen wird. In dem Eingabefeld darunter wird der Radius der runden Ecken in Pixel angegeben. Danach muß auf "Round" geklickt werden. Wie ihr seht, werden folgende Punkte gemacht: 1. Der schwarze Rand ist da. Diesen möchte ich nicht haben. 2. Das Bild wird auf seine ursprüngliche Größe in das Image geladen. 3. Die Ecken des Bildes sind nicht rund. Ich hoffe ihr wißt eine Lösung, denn ich verzeweifle hier ein wenig. :wall: Gruß & Danke, Moony |
Re: Abgerundete Ecken
Hallo zusammen,
weißt denn keiner eine Antwort auf mein Problem??? :cry: Gruß, Moony |
Re: Abgerundete Ecken
ich habe
![]() du musst im Prizip genau das Gleiche machen :) nur halt mit roundRect statt ellipse HTH Frank |
Re: Abgerundete Ecken
Hallo,
ich habe das jetzt so gemacht:
Delphi-Quellcode:
Leider wird hier nur das Bild reingezeichnet ohne jegliche runde Ecken.
procedure DoItRound;
var bmp_mask, bmp_tmp : TBitmap; const cl_trans_tmp = clWhite; cl_trans = clFuchsia; begin bmp_mask := TBitmap.create; bmp_tmp := TBitmap.create; try //load bitmap bmp_tmp.Assign(Form1.image1.picture.bitmap); //resize mask bmp_mask.width := bmp_tmp.width; bmp_mask.height := bmp_tmp.height; //create the mask; bmp_mask.canvas.brush.color := cl_trans; bmp_mask.canvas.Pen.color := cl_trans; bmp_mask.Canvas.FillRect(rect(0,0,bmp_mask.width,bmp_mask.height)); bmp_mask.canvas.brush.color := cl_trans_tmp; bmp_mask.canvas.Pen.color := cl_trans_tmp; bmp_mask.canvas.RoundRect(0,0,bmp_mask.width,bmp_mask.height, 10,10); bmp_mask.TransparentColor := cl_trans_tmp; bmp_mask.Transparent := true; //merging the mask with original bitmap bmp_tmp.Canvas.Draw(0,0,bmp_mask); bmp_tmp.TransparentColor := cl_trans; bmp_tmp.Transparent := true; //Draw masked bitmap Form1.Image2.canvas.draw(0,0,bmp_tmp); finally //free Objects bmp_tmp.free; bmp_mask.free; end; end; Zeichne ich das Ganze anstatt auf das Image2 auf mein Canvas der Form1, dann funktioniert das. In meinem Programm zeichne ich aber auf das Canvas eines Imageobjektes und nicht auf das Canvas der Form. Gruß, Moony |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz