gefüllter Kreis-Bogen

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12643
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal

gefüllter Kreis-Bogen

Beitrag von AUGE_OHR »

hi,

es gibt das Demo 3 zu GRAARC()
GraArc3.jpg
GraArc3.jpg (76.44 KiB) 566 mal betrachtet

und das Demo GraPathClip()
GraPathClip.jpg
GraPathClip.jpg (38.35 KiB) 566 mal betrachtet
statt der Schrift hätte ich gerne "Farbe" und mit 45° "Winkel" von GRAARC(), aber in der "Mitte" frei
wie macht man das :?:
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12643
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal

Re: gefüllter Kreis-Bogen

Beitrag von AUGE_OHR »

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12643
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal

Re: gefüllter Kreis-Bogen

Beitrag von AUGE_OHR »

hi,

ich habe paar Demos gemacht und bin einen Schritt weiter

ein Ring mit Farbe geht einfach

Code: Alles auswählen

      aAttr := Array( GRA_AA_COUNT )   // Füllmuster bestimmen
      aAttr[ GRA_AA_COLOR ] := GRA_CLR_PINK
      GraSetAttrArea( NIL, aAttr )

      GraPathBegin()                   // Grafischen Pfad definieren
         GraArc( , {150,200},  50  )
         GraArc( , {150,200}, 100  )
      GraPathEnd()
      GraPathFill()
aber wenn man Winkel <> 360° eingibt ...

---

es gelingt mit nicht im Demo GraPathClip() den Text durch Farbe zu ersetzen.
Ring_Text.jpg
Ring_Text.jpg (86.96 KiB) 425 mal betrachtet
nun zeichne ich mit GRAARC() zunächst das "Tortenstück" mit Farbe
dann den inneren Kreis ... aber der hat die "selbe" Farbe ...

wenn ich nun die Farbe mit

Code: Alles auswählen

GraSetAttrArea( oPS, aAttr )
ändere macht es für beide GRAARC()

also nun mit Segment und GRAPATH*

Code: Alles auswählen

   nSegment := GraSegOpen( oPS, GRA_SEG_MODIFIABLE )
   GraPathBegin( oPS )
   // Aktion
   GraPathEnd( oPS )
   GraSegClose( oPS )
   GraSegDraw( oPS, nSegment )   
nun die Farbe und Segment löschen

Code: Alles auswählen

   GraPathFill( oPS )
   GraSegDestroy( oPS, nSegment )
---

damit sieht eine "Anzeige" schon so aus wie gewünscht.
PWheel_Demo_Release.jpg
PWheel_Demo_Release.jpg (71.39 KiB) 425 mal betrachtet
aber wenn ich es als "Animation" laufen lasse ...

ich habe ::lockPS() / ::unlockPS() aber trotzdem ein "flackern"
mit ::lockUpdate(.T.) / ::lockUpdate(.F.) zeigt er mir gar nichts an

liegt das am Ownerdraw :?:

Code: Alles auswählen

oPgWheel := DXE_ProgressWheel() :New( oDlg:DrawingArea,, { 10, 50 }, { 200, 200 } )
oPgWheel:drawMode := XBP_DRAW_OWNER
oPgWheel:draw := { | oPS, aInfo, oSelf | oSelf:Draw( oPS, aInfo, oSelf ) }
Anbei Demo mit Source und DLL / LIB (v1.9.355 )
PWHEEL08.ZIP
DLL / LIB v1.9.355
(113.92 KiB) 10-mal heruntergeladen
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12643
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal

Re: gefüllter Kreis-Bogen

Beitrag von AUGE_OHR »

hi,

ich habe eine Lösung gegen das "flackern" bei einer "Animation" gefunden :)

das Problem war das "übermalen" in der Mitte wo man das "Torten-Stück" kurzzeitig sehen konnte.

---

ich habe mir den Source von der harbour Demo angesehen

Code: Alles auswählen

PROCEDURE ProgressWheelPaint()
   ...
   SetProperty( cParentForm, cImgName, "HBITMAP", hBitmap ) // Assign hBitmap to the IMAGE control
RETURN
hey dachte ich mir : warum die "einzelnen" Schritte und nicht das "End-Produkt" anzeigen wie es harbour macht :idea:

das ganze in ein "leeres" Bitmap "malen" und dann das Bitmap anzeigen

Code: Alles auswählen

METHOD DXE_ProgressWheel:Draw( o_PS, aInfo, oSelf )
LOCAL oPS   := XBPPRESSPACE() :new() :Create()
LOCAL oTiny := XBPBITMAP() :New() :Create()

   oTiny:Make( nWidth, nHeight )
   oTiny:presSpace( oPS )
   // hier alle GRA*(oPS ... ) 
   // die in das Bitmap gehen
   
   // und nun das fertige Bitmap "malen"
   oTiny:draw( o_PS )
   // aufräumen
   oTiny:Destroy()
   oPS:destroy()
RETURN Self
damit ist die Anzeige absolut stabil :)
PWheel_Demo_Hell.jpg
PWheel_Demo_Hell.jpg (55.5 KiB) 368 mal betrachtet
hier nun die neue DLL / LIB (v1.9.355 )
PWHEEL09.ZIP
(69.96 KiB) 8-mal heruntergeladen
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12643
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal

Re: gefüllter Kreis-Bogen

Beitrag von AUGE_OHR »

wie spät ist es ...
Uhr_Teit.jpg
Uhr_Teit.jpg (27.16 KiB) 279 mal betrachtet
gruss by OHR
Jimmy
Antworten