AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

rundes "Image"

Ein Thema von xZise · begonnen am 29. Jul 2006 · letzter Beitrag vom 29. Jul 2006
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

rundes "Image"

  Alt 29. Jul 2006, 09:51
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?
Miniaturansicht angehängter Grafiken
regler_283.jpg  
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#2

Re: rundes "Image"

  Alt 29. Jul 2006, 09:55
Hinterleg doch ein TShape und pass auf das er nicht rauskommt.

Edit1:
ein rundes TShape...
  Mit Zitat antworten Zitat
Benutzerbild von konda
konda

Registriert seit: 20. Dez 2005
253 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: rundes "Image"

  Alt 29. Jul 2006, 09:56
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.
"Nichts ist schwieriger als den Gedankengang eines anderen nachzuvollziehen"

Gruß Konda
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#4

Re: rundes "Image"

  Alt 29. Jul 2006, 09:59
Du könntest mit
MSDN-Library durchsuchenCreateRoundRectRgn
eine Region in Form eines Kreises erzeugen und dann mit
MSDN-Library durchsuchenCombineRegion
unten ein Teilstück entfernen.
Mit
MSDN-Library durchsuchenSetWindowRgn
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. :/
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: rundes "Image"

  Alt 29. Jul 2006, 10:08
Hallo,
Zitat von ste_ett:
Ok, habe die Frage etwas falsch verstanden. :p
Etwas früh am Morgen. :/
Die Grundidee stimmt trotzdem. Mit der PtInRegion kann man nämlich schön testen, ob man noch im gültigen Bereich ist.

Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#6

Re: rundes "Image"

  Alt 29. Jul 2006, 10:13
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;
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 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