Something like this in WinForms (saw too late that you mentioned ASP, please tag question as ASP):
private void GenerateControls()
{
Button button = new Button();
button.BackgroundImage = Image.FromFile("coffee.png");
button.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
coffeePanel.Controls.Add(button);
button.Click += new System.EventHandler(this.button1_Click);
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Clicked !");
}
If you don't want to see the button borders, set the properties as follows:
button.FlatStyle = FlatStyle.Flat;
button.FlatAppearance.BorderSize = 0;