Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bild rund schneiden bzw. machen (https://www.delphipraxis.net/102951-bild-rund-schneiden-bzw-machen.html)

LingNeu 7. Nov 2007 13:37


Bild rund schneiden bzw. machen
 
Hallo Delphifans,

auf einem TImage erstelle ich ein Zufallsbildchen aus bunten Punkten.
Da das Image rechteckförmig ist, kann ich leider kein rundes Bild machen.
Gibt es eine Möglichkeit das erstellte Bild so zuzuschneiden, das es rund wird ?
Ich dachte schon daran, evtl. das Bild abzufotografieren und extern irgendwie rund zu machen und dann wieder auf dem Image zu laden. Das gelingt mir leider auch nicht.
Wäre für jeden Hinweis sehr dankbar. Vielleicht hat jemand eine einfache Lösung.
Das ganze dient übrigens als Ausgangsbasis für ein Spiel für behinderte Kinder.

gruss
LingNeu

kolbaschedder 7. Nov 2007 13:43

Re: Bild rund schneiden bzw. machen
 
Hallo,

Du kannst im nachhinein alle Punkte ausserhalb des Kreises mit der Hintergrundfarbe übermalen.
Nicht sehr performant, aber funktioniert ungefähr so.

Bedingung ob ausserhalb des Kreises :

(x-x0)^2 + (y-y0)^2 > r^2

Wobei x0, y0 den Mittelpunkt des Kreises beschreibt, und r den Radius.
also bsw.

x0 := image1.width div 2;
y0 := image1.Height div 2;

r := x0;



MfG

Kolbaschedder

Namenloser 7. Nov 2007 13:51

Re: Bild rund schneiden bzw. machen
 
hallo,

das müsste mit Regions zu realisieren sein. Leider habe ich davon wenig Ahnung, aber such doch mal nach "CreateEllipticRgn".

LingNeu 7. Nov 2007 14:08

Re: Bild rund schneiden bzw. machen
 
Hallo zusammen,
danke Euch für die Anregung

@NamenLozer, in der Delphihilfe ist nichts davon drin. Im Internet habe ich was gefunden, das geht aber anscheinend nur mit einer Form und ich brauch das ja auf einem Image.

@kolbaschedder
Deine Idee ist gut. Muss nur schauen, wie ich die Formel einbaue. Bin eine mathematische Null.

Besten Dank nochmals
LingNeu

sirius 7. Nov 2007 14:25

Re: Bild rund schneiden bzw. machen
 
Warum erstellst du nicht schon das Zufallsbildchen nur innerhalb des Kreises?

Und so machst du das Image rund (bevor du malst)
Delphi-Quellcode:
selectobject(image1.Canvas.Handle,createellipticrgn(20,100,50,10));
Zitat:

HRGN CreateEllipticRgn(

int nLeftRect, // x-coordinate of the upper-left corner of the bounding rectangle
int nTopRect, // y-coordinate of the upper-left corner of the bounding rectangle
int nRightRect, // x-coordinate of the lower-right corner of the bounding rectangle
int nBottomRect // y-coordinate of the lower-right corner of the bounding rectangle

LingNeu 7. Nov 2007 15:48

Re: Bild rund schneiden bzw. machen
 
Hallo Sirius,
danke dir für diese Idee. Leider ist der Bereich trotzdem immer rechteckig.
Wo ich auch noch Probs habe, bei den Koordinaten.
Ich habe ein Image mit Height:=200; Width:=200; Der Kreis sollte jetzt im Durchmesser 100 haben.
Was müsste ich da angeben. Mit den Parametern von Dir kommt der Bereich rechteckig.

selectobject(Imghinten.Canvas.Handle,createellipti crgn(x,y,x2,y2));


Merci
Gruss
LingNeu

LingNeu 9. Nov 2007 13:44

Re: Bild rund schneiden bzw. machen
 
@sirius,
habe jetzt deine Idee nochmals probiert in einem neuen Project und des funktioniert einwandfrei.
Weis noch nicht, warum es im "alten" Programm nicht geht. Aber das bekomme ich schon noch hin.
Danke Dir nochmals herzlich

ciao
LingNeu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 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