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