gefüllter Kreis-Bogen
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
gefüllter Kreis-Bogen
hi,
es gibt das Demo 3 zu GRAARC()
und das Demo GraPathClip() statt der Schrift hätte ich gerne "Farbe" und mit 45° "Winkel" von GRAARC(), aber in der "Mitte" frei
wie macht man das
es gibt das Demo 3 zu GRAARC()
und das Demo GraPathClip() 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
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: gefüllter Kreis-Bogen
hi,
ich habe paar Demos gemacht und bin einen Schritt weiter
ein Ring mit Farbe geht einfach
aber wenn man Winkel <> 360° eingibt ...
---
es gelingt mit nicht im Demo GraPathClip() den Text durch Farbe zu ersetzen. 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
ändere macht es für beide GRAARC()
also nun mit Segment und GRAPATH*
nun die Farbe und Segment löschen
---
damit sieht eine "Anzeige" schon so aus wie gewünscht. 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
Anbei Demo mit Source und DLL / LIB (v1.9.355 )
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()
---
es gelingt mit nicht im Demo GraPathClip() den Text durch Farbe zu ersetzen. 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 )
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 )
Code: Alles auswählen
GraPathFill( oPS )
GraSegDestroy( oPS, nSegment )
damit sieht eine "Anzeige" schon so aus wie gewünscht. 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 ) }
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: gefüllter Kreis-Bogen
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
hey dachte ich mir : warum die "einzelnen" Schritte und nicht das "End-Produkt" anzeigen wie es harbour macht
das ganze in ein "leeres" Bitmap "malen" und dann das Bitmap anzeigen
damit ist die Anzeige absolut stabil
hier nun die neue DLL / LIB (v1.9.355 )
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
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
gruss by OHR
Jimmy
Jimmy