69 lines
2.1 KiB
C#
69 lines
2.1 KiB
C#
|
using System.Drawing;
|
|||
|
using System.Drawing.Imaging;
|
|||
|
using System.Windows.Forms;
|
|||
|
|
|||
|
namespace PDADemo
|
|||
|
{
|
|||
|
public partial class ImageButton : Control
|
|||
|
{
|
|||
|
public ImageButton()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
Image backgroundImage;
|
|||
|
bool pressed = false;
|
|||
|
|
|||
|
// Property for the background image to be drawn behind the button text.
|
|||
|
public Image BackgroundImage
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return this.backgroundImage;
|
|||
|
}
|
|||
|
set
|
|||
|
{
|
|||
|
this.backgroundImage = value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// When the mouse button is pressed, set the "pressed" flag to true
|
|||
|
// and invalidate the form to cause a repaint. The .NET Compact Framework
|
|||
|
// sets the mouse capture automatically.
|
|||
|
protected override void OnMouseDown(MouseEventArgs e)
|
|||
|
{
|
|||
|
this.pressed = true;
|
|||
|
this.Invalidate();
|
|||
|
base.OnMouseDown(e);
|
|||
|
}
|
|||
|
|
|||
|
// When the mouse is released, reset the "pressed" flag
|
|||
|
// and invalidate to redraw the button in the unpressed state.
|
|||
|
protected override void OnMouseUp(MouseEventArgs e)
|
|||
|
{
|
|||
|
this.pressed = false;
|
|||
|
this.Invalidate();
|
|||
|
base.OnMouseUp(e);
|
|||
|
}
|
|||
|
|
|||
|
// Override the OnPaint method to draw the background image and the text.
|
|||
|
protected override void OnPaint(PaintEventArgs e)
|
|||
|
{
|
|||
|
e.Graphics.FillRectangle(new SolidBrush(SystemColors.ActiveCaption), e.ClipRectangle);
|
|||
|
|
|||
|
if (this.backgroundImage != null)
|
|||
|
{
|
|||
|
ImageAttributes attr = new ImageAttributes();
|
|||
|
attr.SetColorKey(Color.Magenta, Color.Magenta);
|
|||
|
|
|||
|
if (this.pressed)
|
|||
|
e.Graphics.DrawImage(this.backgroundImage, this.ClientRectangle, 0, 0, this.backgroundImage.Width, this.backgroundImage.Height, GraphicsUnit.Pixel, attr);
|
|||
|
else
|
|||
|
e.Graphics.DrawImage(this.backgroundImage, this.ClientRectangle, 0, 0, this.backgroundImage.Width, this.backgroundImage.Height, GraphicsUnit.Pixel, attr);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
base.OnPaint(e);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|