Amit Lipman
Amit Lipman

Reputation: 715

Button image sides cropped

I'm trying to fit image to button perfectly. But the image is cropped on its right and bottom faces, see attached print screen: enter image description here

I edited the button as follows:

var l_oStopImage = Image.FromFile(@"C:\Users\AmitL\Downloads\Button-2-stop-icon72p.png");
var l_oStopPic = new Bitmap(l_oStopImage , new Size(btnStopOperation.Width, btnStopOperation.Height));
btnStopOperation.Image = l_oStopPic ;
btnStopOperation.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter;

btnStopOperation.TabStop = false;
btnStopOperation.FlatStyle = FlatStyle.Flat;
btnStopOperation.FlatAppearance.BorderSize = 0;

I also tried to edit the BackgroundImageLayout but none of the ImageLayouts fixed the problem..

Any suggestions? Thanks in advance

Upvotes: 2

Views: 1102

Answers (2)

Reza Aghaei
Reza Aghaei

Reputation: 125207

The problem is because you are showing an image with the same size as your button.

When you want an image fit in your button, the width and height of image should be at least 1 point less than your button size. (or in other word, you can set your button width and height 1 point more than the image size).

So you can change your code to this:

var l_oStopPic = new Bitmap(l_oStopImage ,
    new Size(btnStopOperation.Width-1, btnStopOperation.Height-1));

Upvotes: 1

online Thomas
online Thomas

Reputation: 9381

backgroundimage

1https://msdn.microsoft.com/en-us/library/system.windows.forms.imagelayout(v=vs.110).aspx

You should use stretch, I suggest in designtime (this is not java where you have to add elements by code):

            this.buttonOk.BackColor = System.Drawing.SystemColors.MenuHighlight;
            this.buttonOk.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonOk.BackgroundImage")));
            this.buttonOk.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            this.buttonOk.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            this.buttonOk.Location = new System.Drawing.Point(475, 15);
            this.buttonOk.Name = "buttonOk";
            this.buttonOk.Size = new System.Drawing.Size(50, 50);
            this.buttonOk.TabIndex = 11;
            this.buttonOk.UseVisualStyleBackColor = false;
            this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);

And it will work, done it many times before

I got this code from my own working Form1.Designer.cs but because of that: please use the Visual Studio designer and don't try to write all this code / logic in your constructor or something.

Upvotes: 2

Related Questions