我试图在C#Winform应用程序中创建一个切换按钮。现在,我已经设法通过我之前的帖子提出了切换按钮的外观和感觉。
现在问题是,我无法在按钮上正确对齐我的ImageList中的图像,因此它的边缘会显示一些背景颜色。请参阅下面的图像以获得清晰的视图。
如何摆脱这种白色边缘?
到目前为止所做的事情:
由winfrom设计师生成的代码
//
// checkBox1
//
this.checkBox1.Appearance = System.Windows.Forms.Appearance.Button;
this.checkBox1.BackColor = System.Drawing.Color.White;
this.checkBox1.CausesValidation = false;
this.checkBox1.CheckAlign = System.Drawing.ContentAlignment.BottomLeft;
this.checkBox1.Cursor = System.Windows.Forms.Cursors.Hand;
this.checkBox1.FlatAppearance.BorderSize = 0;
this.checkBox1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.checkBox1.ForeColor = System.Drawing.Color.White;
this.checkBox1.ImageIndex = 0;
this.checkBox1.ImageList = this.imageList1;
this.checkBox1.Location = new System.Drawing.Point(88, 178);
this.checkBox1.Margin = new System.Windows.Forms.Padding(0);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(98, 62);
this.checkBox1.TabIndex = 0;
this.checkBox1.Text = "Sample Button";
this.checkBox1.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
this.checkBox1.UseVisualStyleBackColor = true;
this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged_1);
更新我通过从图片大小减少按钮大小1px(x,y)来设法摆脱这些白边。图像大小为:99x63,按钮大小为98x62。但我不确定这是否是正确的方法。
答案 0 :(得分:1)
这很简单。选择那些设置:
checkBox1.FlatStyle = FlatStyle.Flat;
checkBox1.FlatAppearance.BorderSize = 0;
// make all four (!) BackColors transparent!
checkBox1.BackColor = System.Drawing.Color.Transparent;
checkBox1.FlatAppearance.CheckedBackColor = Color.Transparent;
checkBox1.FlatAppearance.MouseDownBackColor = Color.Transparent;
请注意,使用FlatStyle.Flat时,checkboxbutton会保留8个水平像素,左边6个,右边2个,除非你像这样放大,否则会从图像中剪切8个像素:
checkBox1.Size = new Size(imageList1.ImageSize.Width + 8, imageList1.ImageSize.Height);
现在显示所有像素,但是在向左移动6个像素之前,控件不会明显左对齐!
看看你的例子,这两个问题可能并不重要,但有时它们是......