|
/*=============================================================================
*
* (C) Copyright 2007, Michael Carlisle (mike.carlisle@thecodeking.co.uk)
*
* http://www.TheCodeKing.co.uk
*
* All rights reserved.
* The code and information is provided "as-is" without waranty of any kind,
* either expresed or implied.
*
*-----------------------------------------------------------------------------
* History:
* 18/02/2007 Michael Carlisle Version 1.0
*=============================================================================
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using CodeKing.Native;
namespace CodeKing.Forms
{
public partial class AeroGlassForms : Form
{
// defines how far we are extending the Glass margins
private Win32.MARGINS margins;
/// <summary>
/// Override the onload, and define our Glass margins
/// </summary>
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!Win32.DwmIsCompositionEnabled())
{
MessageBox.Show("This demo requires Vista, with Aero enabled.");
Application.Exit();
}
SetGlassRegion();
}
/// <summary>
/// Use the form padding values to define a Glass margin
/// </summary>
private void SetGlassRegion()
{
// Set up the glass effect using padding as the defining glass region
if (Win32.DwmIsCompositionEnabled())
{
margins = new Win32.MARGINS();
margins.Top = Padding.Top;
margins.Left = Padding.Left;
margins.Bottom = Padding.Bottom;
margins.Right = Padding.Right;
Win32.DwmExtendFrameIntoClientArea(this.Handle, ref margins);
}
}
/// <summary>
/// Override the OnPaintBackground method, to draw the desired
/// Glass regions black and display as Glass
/// </summary>
protected override void OnPaintBackground(PaintEventArgs e)
{
base.OnPaint(e);
if (Win32.DwmIsCompositionEnabled())
{
e.Graphics.Clear(Color.Black);
// put back the original form background for non-glass area
Rectangle clientArea = new Rectangle(
margins.Left,
margins.Top,
this.ClientRectangle.Width - margins.Left - margins.Right,
this.ClientRectangle.Height - margins.Top - margins.Bottom);
Brush b = new SolidBrush(this.BackColor);
e.Graphics.FillRectangle(b, clientArea);
}
}
public AeroGlassForms()
{
InitializeComponent();
}
/// <summary>
/// On scroll change the padding value, which is mapped to the Glass region.
/// </summary>
private void trackBar1_Scroll(object sender, EventArgs e)
{
this.Padding = new Padding(this.trackBar1.Value);
SetGlassRegion();
Invalidate();
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Mike Carlisle - Technical Architect with over 20 years experience in a wide range of technologies.
@TheCodeKing