DarkUI.Net5/DarkUI/Controls/DarkScrollView.cs
Robin 431cea92c8 Added DarkScrollBase and DarkScrollView
Abstract classes that can be built on top of for scrollable controls.
Use DarkScrollBase for non-GDI rendering and DarkScrollView for GDI
rendering.
2015-09-18 12:14:47 +01:00

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
}
}