private LinearGradientBrush ThumbColorLinearGradientTrueDefault(int x, int y, int r, int alpha = 255) { UInt32 shadowColor = 0xff000000 | 0xff000000 & (UInt32)ThumbColorTrue.ToArgb(); Color alphaColor = Color.FromArgb(alpha, ThumbColorTrue); uint alphaMask = 0x01000000 * (uint)alpha; SDLMMSharp.SDLMMControl.LinearGradientBrushBuilder br1 = new SDLMMSharp.SDLMMControl.LinearGradientBrushBuilder(new Point(x, y - r), new Point(x, y + r), alphaColor, alphaColor); br1.AddPosition(0).AddColor(0xb3ffb3 | (alphaMask)) .AddPosition(0.40).AddColor(0x80ff80 | (alphaMask)) .AddPosition(1).AddColor(0x00bf00 | (alphaMask)); return(br1.Build()); }
private LinearGradientBrush ThumbColorLinearGradientTrue(int x, int y, int r, int alpha = 255) { if (DefaultThumbColor) { return(ThumbColorLinearGradientTrueDefault(x, y, r, alpha)); } UInt32 shadowColor = 0xff000000 | 0xff000000 & (UInt32)ThumbColorTrue.ToArgb(); Color alphaColor = Color.FromArgb(alpha, ThumbColorTrue); SDLMMSharp.SDLMMControl.LinearGradientBrushBuilder br1 = new SDLMMSharp.SDLMMControl.LinearGradientBrushBuilder(new Point(x - r, y - r), new Point(x + r, y + r), alphaColor, alphaColor); br1.AddPosition(0).AddColor(alphaColor) .AddPosition(1).AddColor(shadowColor); return(br1.Build()); }
private void DrawThumbWithoutBitmap() { int r = SliderRect.Height / 2; int x = SliderRect.Left + r; int x2 = SliderRect.Left + SliderRect.Width - r; int y = SliderRect.Top + r; if (Transforming) { int offset = 0; int x3 = 0; if (Checked) { offset = (int)(Progress * (-SliderRect.Width)); x3 = x2 + offset; if (x3 < x) { x3 = x; } if (HasShadow) { CurrentRenderTarget.fillCircle(x3 + ShadowOffset, y + ShadowOffset, r + ShadowAdditionRadius, ShadowColor); } if (UseGradient) { using (LinearGradientBrush brush = ThumbColorLinearGradientTrue(x3, y, r + 1)) { CurrentRenderTarget.fillCircle(x3, y, r, brush); } using (LinearGradientBrush brush = ThumbColorLinearGradient(x3, y, r + 1, (int)(Progress * 255))) { CurrentRenderTarget.fillCircle(x3, y, r, brush); } } else { CurrentRenderTarget.fillCircle(x3, y, r, ThumbColorTrue.ToArgb()); CurrentRenderTarget.fillCircle(x3, y, r, Color.FromArgb((int)(Progress * 255), ThumbColor).ToArgb()); } } else { offset = (int)(Progress * SliderRect.Width); x3 = x + offset; if (x3 > x2) { x3 = x2; } if (HasShadow) { CurrentRenderTarget.fillCircle(x3 + ShadowOffset, y + ShadowOffset, r + ShadowAdditionRadius, ShadowColor); } if (UseGradient) { using (LinearGradientBrush brush = ThumbColorLinearGradient(x3, y, r + 1)) { CurrentRenderTarget.fillCircle(x3, y, r, brush); } using (LinearGradientBrush brush = ThumbColorLinearGradientTrue(x3, y, r + 1, (int)(Progress * 255))) { CurrentRenderTarget.fillCircle(x3, y, r, brush); } } else { CurrentRenderTarget.fillCircle(x3, y, r, ThumbColor.ToArgb()); CurrentRenderTarget.fillCircle(x3, y, r, Color.FromArgb((int)(Progress * 255), ThumbColorTrue).ToArgb()); } } } else { if (!Checked) { if (HasShadow) { CurrentRenderTarget.fillCircle(x + ShadowOffset, y + ShadowOffset, r + ShadowAdditionRadius, ShadowColor); } if (UseGradient) { using (LinearGradientBrush brush = ThumbColorLinearGradient(x, y, r + 1)) { CurrentRenderTarget.fillCircle(x, y, r, brush); } } else { CurrentRenderTarget.fillCircle(x, y, r, ThumbColor.ToArgb()); } } else { if (HasShadow) { CurrentRenderTarget.fillCircle(x2 + ShadowOffset, y + ShadowOffset, r + ShadowAdditionRadius, ShadowColor); } if (UseGradient) { using (LinearGradientBrush brush = ThumbColorLinearGradientTrue(x2, y, r + 1)) { CurrentRenderTarget.fillCircle(x2, y, r, brush); } } else { CurrentRenderTarget.fillCircle(x2, y, r, ThumbColorTrue.ToArgb()); } } } }