[Feature] Custom Scrollbar (#183), version 1.0.17.62

This commit is contained in:
Markus Hofknecht 2021-06-05 11:52:33 +02:00
parent c5f4add68b
commit 0fa8b4cf84
3 changed files with 37 additions and 16 deletions

View file

@ -39,5 +39,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.17.61")]
[assembly: AssemblyFileVersion("1.0.17.61")]
[assembly: AssemblyVersion("1.0.17.62")]
[assembly: AssemblyFileVersion("1.0.17.62")]

View file

@ -143,7 +143,7 @@ namespace SystemTrayMenu.UserInterface
int trackHeight = GetTrackHeight();
int sliderHeight = GetSliderHeight(trackHeight);
int pixelRange = trackHeight - sliderHeight;
int realRange = Maximum - Minimum - (int)LargeChange;
int realRange = GetRealRange();
float percentage = 0.0f;
if (realRange != 0)
{
@ -300,26 +300,30 @@ namespace SystemTrayMenu.UserInterface
e.Graphics.FillRectangle(brushScrollbarBorder, new Rectangle(0, 0, Width, Height));
// Draw arrowUp
SolidBrush solidBrushArrowUpBackground;
SolidBrush solidBrushArrowUp;
Pen penArrowUp;
if (timerMouseStillClicked.Enabled &&
!mouseStillClickedMoveLarge && mouseStillClickedMoveUp)
{
solidBrushArrowUp = new SolidBrush(colorArrowClickedBackground);
solidBrushArrowUpBackground = new SolidBrush(colorArrowClickedBackground);
solidBrushArrowUp = new SolidBrush(colorArrowClicked);
penArrowUp = new Pen(colorArrowClicked, 2.5F);
}
else if (arrowUpHovered)
{
solidBrushArrowUp = new SolidBrush(colorArrowHoverBackground);
solidBrushArrowUpBackground = new SolidBrush(colorArrowHoverBackground);
solidBrushArrowUp = new SolidBrush(colorArrowHover);
penArrowUp = new Pen(colorArrowHover, 2.5F);
}
else
{
solidBrushArrowUp = new SolidBrush(colorBackground);
solidBrushArrowUpBackground = new SolidBrush(colorBackground);
solidBrushArrowUp = new SolidBrush(colorArrows);
penArrowUp = new Pen(colorArrows, 2.5F);
}
e.Graphics.FillRectangle(solidBrushArrowUp, GetUpArrowRectangleWithoutBorder());
e.Graphics.FillRectangle(solidBrushArrowUpBackground, GetUpArrowRectangleWithoutBorder());
int widthDevidedBy2 = Width / 2;
int widthDevidedBy6 = Width / 6;
@ -335,6 +339,8 @@ namespace SystemTrayMenu.UserInterface
pointArrowUp3,
pointArrowUp4,
};
e.Graphics.FillPolygon(solidBrushArrowUp, curvePoints);
e.Graphics.DrawPolygon(penArrowUp, curvePoints);
// draw slider
@ -363,27 +369,31 @@ namespace SystemTrayMenu.UserInterface
e.Graphics.FillRectangle(solidBrushSlider, rectangleSlider);
// Draw arrowDown
SolidBrush solidBrushArrowDownBackground;
SolidBrush solidBrushArrowDown;
Pen penArrowDown;
if (timerMouseStillClicked.Enabled &&
!mouseStillClickedMoveLarge && !mouseStillClickedMoveUp)
{
solidBrushArrowDown = new SolidBrush(colorArrowClickedBackground);
solidBrushArrowDownBackground = new SolidBrush(colorArrowClickedBackground);
solidBrushArrowDown = new SolidBrush(colorArrowClicked);
penArrowDown = new Pen(colorArrowClicked, 2.5F);
}
else
if (arrowDownHovered)
{
solidBrushArrowDown = new SolidBrush(colorArrowHoverBackground);
solidBrushArrowDownBackground = new SolidBrush(colorArrowHoverBackground);
solidBrushArrowDown = new SolidBrush(colorArrowHover);
penArrowDown = new Pen(colorArrowHover, 2.5F);
}
else
{
solidBrushArrowDown = new SolidBrush(colorBackground);
solidBrushArrowDownBackground = new SolidBrush(colorBackground);
solidBrushArrowDown = new SolidBrush(colorArrows);
penArrowDown = new Pen(colorArrows, 2.5F);
}
e.Graphics.FillRectangle(solidBrushArrowDown, GetDownArrowRectangleWithoutBorder(trackHeight));
e.Graphics.FillRectangle(solidBrushArrowDownBackground, GetDownArrowRectangleWithoutBorder(trackHeight));
PointF pointArrowDown1 = new PointF(widthDevidedBy2 - widthDevidedBy6, Height - widthDevidedBy2PluswidthDevidedBy8);
PointF pointArrowDown2 = new PointF(widthDevidedBy2 + widthDevidedBy6, Height - widthDevidedBy2PluswidthDevidedBy8);
@ -397,6 +407,7 @@ namespace SystemTrayMenu.UserInterface
pointArrowDown4,
};
e.Graphics.FillPolygon(solidBrushArrowDown, curvePointsArrowDown);
e.Graphics.DrawPolygon(penArrowDown, curvePointsArrowDown);
}
@ -514,13 +525,13 @@ namespace SystemTrayMenu.UserInterface
{
int trackHeight = GetTrackHeight();
int sliderHeight = GetSliderHeight(trackHeight);
int realRange = Maximum - Minimum - (int)LargeChange;
int realRange = GetRealRange();
int pixelRange = trackHeight - sliderHeight;
if (realRange > 0)
{
if (pixelRange > 0)
{
float changeForOneItem = (change * pixelRange) / (Maximum - LargeChange);
float changeForOneItem = GetChangeForOneItem(change, pixelRange);
if ((sliderTop + changeForOneItem) > pixelRange)
{
@ -549,13 +560,13 @@ namespace SystemTrayMenu.UserInterface
{
int trackHeight = GetTrackHeight();
int sliderHeight = GetSliderHeight(trackHeight);
int realRange = Maximum - Minimum - (int)LargeChange;
int realRange = GetRealRange();
int pixelRange = trackHeight - sliderHeight;
if (realRange > 0)
{
if (pixelRange > 0)
{
float changeForOneItem = (change * pixelRange) / (Maximum - LargeChange);
float changeForOneItem = GetChangeForOneItem(change, pixelRange);
if ((sliderTop - changeForOneItem) < 0)
{
@ -728,6 +739,16 @@ namespace SystemTrayMenu.UserInterface
return new Rectangle(new Point(0, Width), new Size(Width + 1, trackHeight));
}
private int GetRealRange()
{
return Maximum - Minimum - (int)LargeChange;
}
private float GetChangeForOneItem(float change, int pixelRange)
{
return (change * pixelRange) / (Maximum - LargeChange);
}
private int GetTrackHeight()
{
return Height - (Width + Width);

View file

@ -522,7 +522,7 @@ namespace SystemTrayMenu.UserInterface
customScrollbar.Height = dgvHeightMax;
customScrollbar.Minimum = 0;
customScrollbar.Maximum = dgvHeightNew;
customScrollbar.LargeChange = (customScrollbar.Maximum / (float)customScrollbar.Height) + dgvHeightMax;
customScrollbar.LargeChange = dgvHeightMax;
customScrollbar.SmallChange = dgv.RowTemplate.Height;
}