Guten morgen,
ich möchte mir selbe einen ProgressIndicator zeichnen und habe eine Subklasse erstellt und drawRect überschrieben.
Allerdings wird drawRect 2x aufgerufen und scheinbar leicht versetzt was zu Aussehen führt von dem Bild was angehängt ist.
Hier der Code:
Alles anzeigen
Es liegt auch nicht an der Funktion roundBezierPath zeichne ich ein Rechteck, dann schaut das genau so aus.
Schon mal jemand einen selber gezeichnet?
ich möchte mir selbe einen ProgressIndicator zeichnen und habe eine Subklasse erstellt und drawRect überschrieben.
Allerdings wird drawRect 2x aufgerufen und scheinbar leicht versetzt was zu Aussehen führt von dem Bild was angehängt ist.
Hier der Code:
Quellcode
- - (NSBezierPath*)roundBezierPath:(NSRect)theSize {
- float CURVERADIUS = 5.0;
- float CURVEFACTOR = 0.5;
- float actualCornerRadius = MIN(MIN(ABS(theSize.size.width),ABS(theSize.size.height)),CURVERADIUS);
- float curveFactor = CURVEFACTOR;
- float left = theSize.origin.x;
- float right = theSize.origin.x+theSize.size.width;
- float bottom = theSize.origin.y;
- float top = theSize.origin.y+theSize.size.height;
- NSBezierPath* path = [NSBezierPath bezierPath];
- [path moveToPoint:NSMakePoint(left,top-actualCornerRadius)];
- [path curveToPoint:NSMakePoint(left+actualCornerRadius,top)
- controlPoint1:NSMakePoint(left,top-actualCornerRadius*curveFactor)
- controlPoint2:NSMakePoint(left+actualCornerRadius*curveFactor,top)];
- [path lineToPoint:NSMakePoint(right-actualCornerRadius,top)];
- [path curveToPoint:NSMakePoint(right,top-actualCornerRadius)
- controlPoint1:NSMakePoint(right-actualCornerRadius*curveFactor,top)
- controlPoint2:NSMakePoint(right,top-actualCornerRadius*curveFactor)];
- [path lineToPoint:NSMakePoint(right,bottom+actualCornerRadius)];
- [path curveToPoint:NSMakePoint(right-actualCornerRadius,bottom)
- controlPoint1:NSMakePoint(right,bottom+actualCornerRadius*curveFactor)
- controlPoint2:NSMakePoint(right-actualCornerRadius*curveFactor,bottom)];
- [path lineToPoint:NSMakePoint(left+actualCornerRadius,bottom)];
- [path curveToPoint:NSMakePoint(left,bottom+actualCornerRadius)
- controlPoint1:NSMakePoint(left+actualCornerRadius*curveFactor,bottom)
- controlPoint2:NSMakePoint(left,bottom+actualCornerRadius*curveFactor)];
- [path closePath];
- return path;
- }
- - (void)drawRect:(NSRect)aRect {
- NSBezierPath *bp;
- bp = [self roundBezierPath:aRect];
- [[NSColor whiteColor] set];
- [bp setLineWidth:1.0f];
- [bp stroke];
- }
Es liegt auch nicht an der Funktion roundBezierPath zeichne ich ein Rechteck, dann schaut das genau so aus.
Schon mal jemand einen selber gezeichnet?
:wq! /dev/null