public override void DrawRect(NSRect aRect) { // draw background NSRect slotRect = RectForPart(NSScrollerPart.NSScrollerKnobSlot); NSColor.BlackColor.Set(); AppKitFramework.NSRectFill(slotRect); AppKitFramework.NSRectFill(aRect); NSColor.ColorWithCalibratedWhiteAlpha(0.1f, 1.0f).Set(); NSBezierPath path = new NSBezierPath(); path.AppendBezierPathWithRoundedRectXRadiusYRadius(slotRect, 2.0f, 2.0f); path.LineWidth = 3.0f; path.Stroke(); path.Release(); // draw know DrawKnob(); // draw the arrow button backgrounds DrawArrow(NSScrollerPart.NSScrollerIncrementLine); DrawArrow(NSScrollerPart.NSScrollerDecrementLine); }
private void DrawArrow(NSScrollerPart aScrollPart) { NSRect rect = RectForPart(aScrollPart); // draw background NSColor.BlackColor.Set(); AppKitFramework.NSRectFill(rect); // draw button background if (aScrollPart == HitPart) { NSColor.WhiteColor.Set(); } else { NSColor.ColorWithCalibratedWhiteAlpha(0.1f, 1.0f).Set(); } NSBezierPath path = new NSBezierPath(); path.AppendBezierPathWithRoundedRectXRadiusYRadius(rect.InsetRect(1.0f, 1.0f), 2.0f, 2.0f); path.LineWidth = 2.0f; path.Stroke(); path.Release(); // draw arrow NSColor.WhiteColor.Set(); float arrowSize = 6.0f; NSRect arrowRect = new NSRect(rect.MidX - (arrowSize * 0.5f), rect.MidY - (arrowSize * 0.5f), arrowSize, arrowSize); path = new NSBezierPath(); if (aScrollPart == NSScrollerPart.NSScrollerDecrementLine) { path.MoveToPoint(new NSPoint(arrowRect.MinX, arrowRect.MaxY)); path.LineToPoint(new NSPoint(arrowRect.MaxX, arrowRect.MaxY)); path.LineToPoint(new NSPoint(arrowRect.MidX, arrowRect.MinY)); path.LineToPoint(new NSPoint(arrowRect.MinX, arrowRect.MaxY)); } else { path.MoveToPoint(new NSPoint(arrowRect.MinX, arrowRect.MinY)); path.LineToPoint(new NSPoint(arrowRect.MaxX, arrowRect.MinY)); path.LineToPoint(new NSPoint(arrowRect.MidX, arrowRect.MaxY)); path.LineToPoint(new NSPoint(arrowRect.MinX, arrowRect.MinY)); } path.ClosePath(); path.Fill(); path.Release(); }