我正在尝试将一些背景图像添加到我的Win Forms应用程序中的几个按钮.这三个图像的大小不同(即像素尺寸不匹配,一个是128×128,另一个是256×256).我需要按钮的大小相同(否则GUI非常不对称).在不更改实际图像文件的情况下,如何使用按钮大小来缩放图像?
我已经尝试创建自己的类,并为按钮resize事件添加事件处理程序,但这似乎不起作用.我的代码:
class CustomButton : Button { internal void CustomButton_Resize( object sender,EventArgs e ) { if ( this.BackgroundImage == null ) { return; } var pic = new Bitmap( this.BackgroundImage,this.Width,this.Height ); this.BackgroundImage = pic; } }
并以形式:
this.buttonOne.Resize += new System.EventHandler(this.buttonOne.CustomButton_Resize);
解决方法
简单的编程方式
假设我有一个按钮btn1,以下代码在visual-studio-2010中完美运行.
private void btn1_Click(object sender,EventArgs e) { btn1.Width = 120; btn1.Height = 100; } void btn1_Resize(object sender,EventArgs e) { if ( this.BackgroundImage == null ) return; var bm = new Bitmap(btn1.BackgroundImage,new Size(btn1.Width,btn1.Height)); btn1.BackgroundImage = bm; }
更好的方法
您可以在自定义按钮的构造函数中添加eventHandler(只是为了确保您正确添加eventhandler)
class CustomButton : Button { CustomButton() { this.Resize += new System.EventHandler(buttonOne.CustomButton_Resize); } void CustomButton_Resize( object sender,EventArgs e ) { if ( this.BackgroundImage == null ) return; var pic = new Bitmap( this.BackgroundImage,new Size(this.Width,this.Height) ); this.BackgroundImage = pic; } }
现在,当您将图像尺寸调整到适合其新尺寸的任何位置时,您将调整按钮的大小.