mirror of
https://github.com/colhountech/DarkUI.Net5.git
synced 2025-07-02 07:09:27 +03:00
Abstract classes that can be built on top of for scrollable controls. Use DarkScrollBase for non-GDI rendering and DarkScrollView for GDI rendering.
61 lines
1.6 KiB
C#
61 lines
1.6 KiB
C#
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DarkUI
|
|
{
|
|
public abstract class DarkScrollView : DarkScrollBase
|
|
{
|
|
#region Constructor Region
|
|
|
|
protected DarkScrollView()
|
|
{
|
|
SetStyle(ControlStyles.OptimizedDoubleBuffer |
|
|
ControlStyles.ResizeRedraw |
|
|
ControlStyles.UserPaint, true);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Paint Region
|
|
|
|
protected abstract void PaintContent(Graphics g);
|
|
|
|
protected override void OnPaint(PaintEventArgs e)
|
|
{
|
|
var g = e.Graphics;
|
|
|
|
// Draw background
|
|
using (var b = new SolidBrush(BackColor))
|
|
{
|
|
g.FillRectangle(b, ClientRectangle);
|
|
}
|
|
|
|
// Offset the graphics based on the viewport, render the control contents, then reset it.
|
|
g.TranslateTransform(Viewport.Left * -1, Viewport.Top * -1);
|
|
|
|
PaintContent(g);
|
|
|
|
g.TranslateTransform(Viewport.Left, Viewport.Top);
|
|
|
|
// Draw the bit where the scrollbars meet
|
|
if (_vScrollBar.Visible && _hScrollBar.Visible)
|
|
{
|
|
using (var b = new SolidBrush(BackColor))
|
|
{
|
|
var rect = new Rectangle(_hScrollBar.Right, _vScrollBar.Bottom, _vScrollBar.Width,
|
|
_hScrollBar.Height);
|
|
|
|
g.FillRectangle(b, rect);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void OnPaintBackground(PaintEventArgs e)
|
|
{
|
|
// Absorb event
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|