我对.NET中的按钮上的图像有一个相当恼人的问题。它们的行为不像您期望按钮上的图像表现的那样。
在按钮的属性中,您可以设置图像。所以我选择了一个图像,图像显示在按钮上!到现在为止还挺好。 单击按钮或处于按下状态时,按钮文本将向下移动一个像素以创建深度。但不是形象!它将保持相同的位置,看起来很奇怪。 还有BackgroundImage属性,但更糟糕的是!因为如果我将BackgroundImageLayout设置为None而不是Center,则图像将在按下时向上移动向左移动,与文本完全相反的方向!怎么了?
无论如何,我想要实现的是一个按钮图像,就像当按钮处于按下状态时文本移动一样。有没有办法做到这一点?
答案 0 :(得分:0)
只需制作一个新图像并将原始图像粘贴到偏移处即可。然后将其设置为Button
的{{1}}。
示例:
Image
编辑:以下功能修复了一个问题:当鼠标按钮仍处于按下状态时光标离开按钮区域时图像不会“弹回”(请参阅下面的工党评论): / p>
private void button1_MouseDown(object sender, MouseEventArgs e)
{
// replace "button_image.png" with the filename of the image you are using
Image normalImage = Image.FromFile("button_image.png");
Image mouseDownImage = new Bitmap(normalImage.Width + 1, normalImage.Height + 1);
Graphics g = Graphics.FromImage(mouseDownImage);
// this will draw the normal image at an offset on mouseDownImage
g.DrawImage(normalImage, 1, 1); // offset is one pixel each for x and y
// clean up
g.Dispose();
button1.Image = mouseDownImage;
}
private void button1_MouseUp(object sender, MouseEventArgs e)
{
// reset image to the normal one
button1.Image = Image.FromFile("button_image.png");
}