2015-06-09 3 views
0

Я пытаюсь сделать кнопку переключения внутри приложения C# Winform. Теперь мне удалось сделать кнопку переключения и выглядеть с предложением из моего предыдущего сообщения.Выравнивание изображения кнопки флажка Winform

Теперь проблема заключается в том, что я не могу центрировать выравнивание изображений из моего ImageList правильно на кнопке, поэтому он показывает некоторые из задних цветов на его краях. Пожалуйста, ознакомьтесь с приведенными ниже изображениями для четкого просмотра.

Toggle state 1 Toggle state 2

Как я могу избавиться от этих белых краев?

Вещи пытался до сих пор:

  1. FlatAppearance от кнопки устанавливается в Flat.
  2. Пробовал прозрачный цвет фона, но это не сработало.
  3. ImageAlign установлен в MiddleCenter.

Код сгенерирован 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); 

Update: I'v удалось избавиться от этих белых краев за счет уменьшения размера кнопки 1px (как х, у) от размера изображения , Размер изображения: 99x63, размер кнопки 98x62. Но я не уверен, что это правильный способ сделать это.

+0

, что делает код WinForm дизайнер создает для кнопки Sample? – ASh

+0

@ASh: Обновлено мое сообщение. – hypheni

ответ

1

Это просто. Выберите Therese параметров:

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 пикселей!

Глядя на вашем примере оба вопроса, вероятно, не имеет значения, хотя, но иногда они ..

+0

Уже сделал. Пожалуйста, смотрите мой код дизайнера. – hypheni

+0

Думаю, вам нужно изменить __all four__ BackColors to Transparent. – TaW

+0

Исправить. Вы попали в нужную цель. – hypheni

Смежные вопросы