[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/privacyprotection/cron/task/anonymize_ip.php on line 83: A non-numeric value encountered
Inoffizielles deutsches Xbase-Forum • gefüllter Kreis-Bogen
Seite 1 von 1

gefüllter Kreis-Bogen

Verfasst: Do, 30. Sep 2021 23:17
von AUGE_OHR
hi,

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

und das Demo GraPathClip()
GraPathClip.jpg
GraPathClip.jpg (38.35 KiB) 3448 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 :?:

Re: gefüllter Kreis-Bogen

Verfasst: Fr, 01. Okt 2021 11:43
von AUGE_OHR

Re: gefüllter Kreis-Bogen

Verfasst: Mo, 04. Okt 2021 13:38
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) 3307 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) 3307 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) 172-mal heruntergeladen

Re: gefüllter Kreis-Bogen

Verfasst: Di, 05. Okt 2021 12:02
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) 3250 mal betrachtet
hier nun die neue DLL / LIB (v1.9.355 )
PWHEEL09.ZIP
(69.96 KiB) 164-mal heruntergeladen

Re: gefüllter Kreis-Bogen

Verfasst: Do, 07. Okt 2021 8:05
von AUGE_OHR
wie spät ist es ...
Uhr_Teit.jpg
Uhr_Teit.jpg (27.16 KiB) 3161 mal betrachtet