Kreisausschnitt

06/12/2008 - 15:27 von Jürgen Schmitt | Report spam
Hallo zusammen,
die Grafik einer Picturebox (z.B. ein Glücksrad) ist in 30
Kreissegmente zu je 12° eingeteilt.
Wenn der Nutzer mit der Maus ein bestimmtes Segment berührt, soll dieses
sozusagen 'beleuchtet' werden.
Habe die Grafik in 2 pictureboxen - Original (Picture1) + Kopie
(Picture2) - abgelegt. Picture2 soll 'beleuchtet' werden.

Wechselt das Segment, wird Picture2 mittels BitBlt wieder hergestellt.
Jetzt komme ich mit dem Segment nicht weiter, welches 'beleuchtet'
werden soll. Wollte das entsprechende Kreissement in eine dritte
Picturebox kopieren, dann dort bearbeiten (z.B. BackColor aufhellen) und
von dort aus nach Picture2 kopieren.
Oder die gesamte Grafik in eine 3. Picturebox kopieren, dann dort nur
das Kreissegment bearbeiten und anschl. komplett nach Picture2 kopieren.
Zudem sind die Kreisausschnitte noch in unterschiedlichen Farbgebungen
beschriftet. Diese Beschriftungen sollten nicht zerstört werden.
Weiss nicht, wie ich das lösen kann. Gibt es vllt. eine API, mit der man
Kreissegmente kopieren kann ??
Vielen Dank
Gruss
 

Lesen sie die antworten

#1 Christian Zimmermann
08/12/2008 - 09:20 | Warnen spam
Hallo Jürgen,

Jürgen Schmitt schrieb:

die Grafik einer Picturebox (z.B. ein Glücksrad) ist in 30
Kreissegmente zu je 12° eingeteilt.
Wenn der Nutzer mit der Maus ein bestimmtes Segment berührt, soll dieses
sozusagen 'beleuchtet' werden.
Habe die Grafik in 2 pictureboxen - Original (Picture1) + Kopie
(Picture2) - abgelegt. Picture2 soll 'beleuchtet' werden.

Wechselt das Segment, wird Picture2 mittels BitBlt wieder hergestellt.



D. h. du weißt, wann die Maus ein Segment verlàßt und in das benachbarte
eintritt.

Jetzt komme ich mit dem Segment nicht weiter, welches 'beleuchtet'
werden soll.



Wenn die Segmentlinien alle einheitlich die gleiche Farbe haben und
"on-top" gezeichnet wurden, dann kannst du ein Segment einfach mit
(Ext)FloodFill in einer bestimmten Farbe ausfüllen lassen. Einfach mal
diese NG durchgooglen.

Wollte das entsprechende Kreissement in eine dritte
Picturebox kopieren, dann dort bearbeiten (z.B. BackColor aufhellen) und
von dort aus nach Picture2 kopieren.
Oder die gesamte Grafik in eine 3. Picturebox kopieren, dann dort nur
das Kreissegment bearbeiten und anschl. komplett nach Picture2 kopieren.



Wenn du weißt, in welchem Segment du dich befindest, dann merkst du dir
eine Koordinate im aktuellen Segment. Beim Wechsel in ein anderes
Segment füllst du wieder die Farbe die gültig ist, wenn sich der
Mousecursor nicht darüber befindet.

Zudem sind die Kreisausschnitte noch in unterschiedlichen Farbgebungen
beschriftet. Diese Beschriftungen sollten nicht zerstört werden.
Weiss nicht, wie ich das lösen kann. Gibt es vllt. eine API, mit der man
Kreissegmente kopieren kann ??



Was spricht gegen neu zeichnen? Nach Anwednung von (Ext)FloodFill muss
alles was nicht der Begrenzungsfarbe entspricht wieder neu gezeichnet
werden. D. h. du mußt die Segementbeschriftung erneut schreiben. Das
muss aber nur geschehen, wenn eine Änderung der "Beleuchtung" eintritt,
d. h. bevor du bei jedem MouseMove zeichnest erst prüfen, ob das
überhaupt nötig ist, z. B. mit der Point-Methode die Farbe eines
bestimmten Punktes ermitteln.

Gruß

Christian

Ähnliche fragen