У меня есть пользовательский интерфейс, который требует размещения некоторых круглых кнопок в проекте C# с некоторыми данными позади них. Кнопки - System.Windows.Forms.buttons, и я использовал изображение GIF с прозрачностью для их создания. Однако прозрачные области не прозрачны. Я искал ссылки в Интернете, но не нашел предложений относительно того, как это сделать правильно. Есть некоторые упоминания о том, чтобы сделать это в Visual Studio 2008, но мне нужно сохранить этот проект в 2005 году. Любая помощь или предложение приветствуются.Могу ли я создавать прозрачные кнопки в Visual Studio 2005 с C#
ответ
Я уверен, что вам нужно использовать PNG с WinForms, чтобы получить прозрачность изображения. Я знаю, что успешно их использовал.
EDIT: Когда я использовал PNG, я накладывал их с помощью Image Control на Form1.BackgroundImage; Я не использовал их в пуговицах.
Я думаю, что лучше всего перейти от использования кнопки управления к управлению изображением. Вы также можете попробовать изменить стиль кнопки на плоскость (я думаю, что это был плоский, может быть, один из других стилей) и посмотреть, сможете ли вы получить такой эффект, который вы хотите.
Вам необходимо установить свойство BackColor кнопки «Прозрачный».
Button1.BackColor = System.Drawing.Color.Transparent;
создать класс, полученный из кнопки, и поместить этот код.
protected override CreateParams CreateParams
{
get
{
const int WS_EX_TRANSPARENT = 0x20;
CreateParams cp = base.CreateParams;
cp.ExStyle |= WS_EX_TRANSPARENT;
return cp;
}
}
и метод создания
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
this.BackColor = Color.Transparent;
Я использую Visual Studio 2005 и попытался следующий ваш пример выше, но это не сработало (фрагмент кода в метод создания). У меня есть фон для моей формы, и я пытаюсь создать скошенные прозрачные кнопки.
В настоящее время вставляемый выше код делает мой фон прозрачным, а мои кнопки - все в белом цвете.
вот фрагмент моего кода
Bitmap mainFormBackground = (Bitmap)Image.FromFile("background.jpg");
this.BackgroundImage = mainFormBackground;
this.BackColor = Color.Black;
this.ForeColor = Color.White;
Добавить несколько кнопок
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
this.BackColor = Color.Transparent;
Я даже попытался
btnName.BackColor = Color.Transpare;
это тоже не сработало
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
public class TransparentControl : Control
{
public TransparentControl()
{
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
SetStyle(ControlStyles.ResizeRedraw, true);
this.BackColor = Color.Transparent;
}
protected override void OnPaint(PaintEventArgs pevent)
{
Graphics g = pevent.Graphics;
g.DrawRectangle(Pens.Black, this.ClientRectangle);
}
protected override void OnPaintBackground(PaintEventArgs pevent)
{
// don't call the base class
//base.OnPaintBackground(pevent);
}
protected override CreateParams CreateParams
{
get
{
const int WS_EX_TRANSPARENT = 0x20;
CreateParams cp = base.CreateParams;
cp.ExStyle |= WS_EX_TRANSPARENT;
return cp;
}
}
// rest of class here...
}
Попробуйте это:
Bitmap temp = new Bitmap(button1.Image);
temp.MakeTransparent(Color.Black); //your transparent color, in this case black
button1.Image = (Image) Logo;
temp.Dispose();
temp = null;
Просто установите кнопку в FlatStyle property для "Flat" & hellip; и вуаля! Я знаю, что это работает с PNG, но я не тестировал его с помощью GIF.
Следующий ответ проверяется в Visual Studio 2012 и работает с форматом backgroundImage BMP, GIF, PNG, а также JPG; созданный MS Paint.
Чтобы сделать фон виден через кнопку:
Перейти к окну свойств кнопки.Затем измените FlatStyle и BackColor, как показано на рисунке ниже:
Примечание: цвет должен быть выбран из веб-вкладок и FlatStyle должен быть выбран в качестве Flat.
Но после этого кнопка будет прозрачной, если мышь не наводится, или она не выбрана или не нажата. При этом условии он будет в некотором непрозрачном цвете. Если вы хотите сделать его прозрачным, следуйте следующим изображениям и измените соответствующие цвета на прозрачные, как раньше. Цвета, которые необходимо изменить: «MouseOverBackColor» & «MouseDownBackColor».
Примечание: Если вы выбираете всегда прозрачны, как показано на рисунке, не будет никаких изменений во внешнем виде кнопки в то время как она будет в действии!
Надеюсь, это поможет вам.
Удачи!
Спасибо, amdfan. Я посмотрю, смогу ли я заставить это работать. – Sean 2008-10-15 01:12:32