代码之家  ›  专栏  ›  技术社区  ›  lpmaxim

当鼠标光标悬停在按钮上时,背景图像会移动

  •  0
  • lpmaxim  · 技术社区  · 2 年前

    对不起我的英语。这是我第一次用这种语言写问题。如果你能纠正我的语法错误,我会很高兴的。

    我创造了一个 changing_button 并设置其BackgroundImage属性。我希望当光标在这个按钮上时,这个图像会改变。我为此拍了两张照片。

    蓝色的图片。巴布亚新几内亚: enter image description here

    红色图片。巴布亚新几内亚: enter image description here

    正常地 更改按钮 应该显示红色的图像。但如果光标在这个按钮上,它应该会显示蓝色的图片。问题是,当我试图覆盖BackgroundImage属性时,blue_图像会移动: enter image description here

    我该怎么解决这个问题?

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace winforms_test_1
    {
        public partial class Form1 : Form
        {
            Button changing_button;
    
            Image blue_image = Image.FromFile("D://images//blue_image.png");
            Image red_image = Image.FromFile("D://images//red_image.png");
            public Form1()
            {
                InitializeComponent();
                TableLayoutPanel main_panel = new TableLayoutPanel
                {
                    BackColor = Color.White,
                    Dock = DockStyle.Fill
                };
    
                changing_button = new Button
                {
                    BackgroundImage = red_image,
                    BackgroundImageLayout = ImageLayout.Center,
                    FlatStyle = FlatStyle.Flat,
                    Margin = new Padding(0, 0, 0, 0),
                    Size = new Size(50, 50),
                };
                changing_button.FlatAppearance.BorderSize = 0;
                changing_button.MouseEnter += new System.EventHandler(this.test_button_MouseEnter);
                changing_button.MouseLeave += new System.EventHandler(this.test_button_MouseLeave);
    
                main_panel.Controls.Add(changing_button, 0, 0);
                Controls.Add(main_panel);
            }
    
            void test_button_MouseEnter(object sender, EventArgs e)
            {
                changing_button.Image = blue_image;
    
            }
    
            void test_button_MouseLeave(object sender, EventArgs e)
            {
                changing_button.Image = red_image;
    
            }
        }
    }
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   John V    2 年前

    将初始图像设置为红色图像,而不是更改背景图像。背景图片和图片的位置看起来略有不同。

    changing_button = new Button
    {
        Image = red_image,
        ImageLayout = ImageLayout.Center,
        FlatStyle = FlatStyle.Flat,
        Margin = new Padding(0, 0, 0, 0),
        Size = new Size(50, 50),
    };
    

    使用背景图片或图片,但不能同时使用。