![]() |
rundes "Image"
Liste der Anhänge anzeigen (Anzahl: 1)
Ich wollte einen Regler basteln in einem Halbkreis auf einem Image (siehe Anhang), so das der Regler nicht aus dem Halbkreis rauskann.
Wie kann ich jetzt am einfachsten Programmieren, dass er weiß, wo der Halbkreis zuende ist? |
Re: rundes "Image"
Hinterleg doch ein TShape und pass auf das er nicht rauskommt.
Edit1: ein rundes TShape... |
Re: rundes "Image"
Am besten du machst es mit 2 images und legst den Punkt über den Halbkreis, jetzt prüfst du immer wenn du denn Halbkreis bewegst die Pixelfarbe des unteren Bildes. Wenn sich die ändert stoppst du einfach die Bewegung. :wink:
|
Re: rundes "Image"
Du könntest mit
![]() eine Region in Form eines Kreises erzeugen und dann mit ![]() unten ein Teilstück entfernen. Mit ![]() setzt du eine neue Region für eine TImage-Instanz. Jetzt kannst du auf dem Ding rummalen wie du willst. Durch die neue "Form" des Controlls kannst du nicht aus dem Kreissegment "herauszeichnen". :) -edit- Ok, habe die Frage etwas falsch verstanden. :p Etwas früh am Morgen. :/ |
Re: rundes "Image"
Hallo,
Zitat:
Gruß xaromz |
Re: rundes "Image"
Lol... So früh und so fleißig... ^^
Ich hoffe es stört niemanden, aber ich habe "einfach" geguckt, ob die Entfernung zum Mittelpunkt nicht größer als der Radius ist (Ich hatte vergessen zu sagen, dass es Kreis (r ist immer gleich) ist). Wenn das Bild 100 px breit und 50 Px hoch ist: (Change ist eine variable ob gedrückt ist)
Delphi-Quellcode:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin setRegler(Point(50 - X,50 - Y)); end; procedure TForm1.setRegler(Position : TPoint); begin // entfernung zum Mittelpunkt Label3.Caption := IntToStr(Round(sqrt(IntPower(Position.X, 2) + IntPower(Position.Y, 2)))); // Position (vom Mittelpuknkt) Label4.Caption := IntToStr(Position.X); Label5.Caption := IntToStr(Position.Y); // Regler zeichenen ( wenn er gezichnet werden soll) if (Change) and (sqrt(IntPower(Position.X, 2) + IntPower(Position.Y, 2)) <= 50) then begin with Image1.Canvas do begin Brush.Color := clGray; Ellipse(0,0, 100,100); Brush.Color := clBlack; Ellipse((50 - Position.X) - 3, (50 - Position.Y) - 3, (50 - Position.X) + 3, (50 - Position.Y) + 3); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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 by Thomas Breitkreuz