单击按钮时按钮图像与文本不对齐?

时间:2013-07-07 17:58:48

标签: c# .net image button offset

我对.NET中的按钮上的图像有一个相当恼人的问题。它们的行为不像您期望按钮上的图像表现的那样。

在按钮的属性中,您可以设置图像。所以我选择了一个图像,图像显示在按钮上!到现在为止还挺好。 单击按钮或处于按下状态时,按钮文本将向下移动一个像素以创建深度。但不是形象!它将保持相同的位置,看起来很奇怪。 还有BackgroundImage属性,但更糟糕的是!因为如果我将BackgroundImageLayout设置为None而不是Center,则图像将在按下时向上移动向左移动,与文本完全相反的方向!怎么了?

无论如何,我想要实现的是一个按钮图像,就像当按钮处于按下状态时文本移动一样。有没有办法做到这一点?

1 个答案:

答案 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");
}