RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Для Https
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^(.*)$ http%1://www.%{HTTP_HOST}/$1 [R=301,L]
WinForms действительно не поддерживает прозрачные средства управления, но можно сделать прозрачное управление сами. См. мой ответ здесь .
В Вашем случае необходимо, вероятно, разделить индикатор выполнения на подклассы и переопределить метод OnPaint для рисования текста на индикаторе выполнения.
Добавьте новый класс к своему проекту и отправьте код, показанный ниже. Сборка. Отбросьте новое управление от вершины панели инструментов на Вашу форму.
using System;
using System.Windows.Forms;
public class TransparentLabel : Label {
public TransparentLabel() {
this.SetStyle(ControlStyles.Opaque, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
}
protected override CreateParams CreateParams {
get {
CreateParams parms = base.CreateParams;
parms.ExStyle |= 0x20; // Turn on WS_EX_TRANSPARENT
return parms;
}
}
}
Если вы хотите сосредоточиться на разработке своего приложения для Windows, я предлагаю вам использовать WPF.
Сделать контроллеры прозрачными в WPF очень просто.
<TextBox Width="200" Height="40" Opacity="0.5"/>
Вот прозрачный элемент управления, который я написал некоторое время назад, который отображает повернутый текст. Большая часть кода взята из здесь , хотя IIRC мне пришлось сделать несколько настроек, чтобы заставить его работать.
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Linq;
using System.Windows.Forms;
namespace MyNamespace
{
public partial class RotatedText : UserControl
{
private readonly Timer _invalidationTimer;
private const int WS_EX_TRANSPARENT = 0x00000020;
public RotatedText()
{
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
InitializeComponent();
_invalidationTimer = new Timer {Interval = 500, Enabled = true};
_invalidationTimer.Tick += TickHandler;
}
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Category("Appearance")]
[Description("Text which appears in control")]
public string Text { get; set; }
#region Transparent background
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= WS_EX_TRANSPARENT;
return cp;
}
}
private void TickHandler(object sender, EventArgs e)
{
InvalidateEx();
}
private void InvalidateEx()
{
if (Parent != null)
Parent.Invalidate(Bounds, false);
else
Invalidate();
}
protected override void OnPaintBackground(PaintEventArgs e)
{
//Intentionally do nothing - stops background from drawing
//base.OnPaintBackground(e);
}
#endregion
//Rotate text and draw
protected override void OnPaint(PaintEventArgs e)
{
double angleRadians = Math.Atan2(Height, Width);
float angleDegrees = -1*(float) (angleRadians*180/Math.PI);
angleDegrees *= 0.9f;
e.Graphics.RotateTransform(angleDegrees, MatrixOrder.Append);
e.Graphics.TranslateTransform(20, Height - 75, MatrixOrder.Append);
e.Graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
Font font = new Font("Ariel", 50);
e.Graphics.DrawString(Text, font, Brushes.Gray, 1, 2); //Shadow
e.Graphics.DrawString(Text, font, Brushes.Red, 0, 0);
}
}
}
Это очень простое решение, которое прекрасно работает:
public class MyLabel : Label
{
private bool fTransparent = false;
public bool Transparent
{
get { return fTransparent; }
set { fTransparent = value; }
}
public MyLabel() : base()
{
}
protected override CreateParams CreateParams
{
get
{
if (fTransparent)
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT
return cp;
}
else return base.CreateParams;
}
}
protected override void WndProc(ref Message m)
{
if (fTransparent)
{
if (m.Msg != 0x14 /*WM_ERASEBKGND*/ && m.Msg != 0x0F /*WM_PAINT*/)
base.WndProc(ref m);
else
{
if (m.Msg == 0x0F) // WM_PAINT
base.OnPaint(new PaintEventArgs(Graphics.FromHwnd(Handle), ClientRectangle));
DefWndProc(ref m);
}
}
else base.WndProc(ref m);
}
}
Когда задний цвет метки прозрачен, метка снимает свой базовый элемент управления только при первом создании, после того как задний цвет метки будет постоянная. И каждый раз, когда метка перерисовывается, она перекрашивается в этот фиксированный цвет или рисунок.
Переопределение CreateParams влияет на то, как будет создано окно для элемента управления, это обеспечивает реальную прозрачность.
Переопределяя WndProc, вы контролируете, какие сообщения следует передавать в базовый класс. Мы должны фильтровать WM_ERASEBKGND и WM_PAINT, но мы также должны вызвать событие рисования.
Таким образом, как комментарий к моему предыдущему указанному ответу, Управление является поведением по умолчанию и - то, что я помнил как являющийся Прозрачным.
Так или иначе, Вы попытались установить фоновое свойство своего UserControl или контейнер, в котором находится Ваша маркировка (Панель, Форма, безотносительно?), Ваша маркировка должна отразить что цвет:)
<час>Старый Ответ: Его некоторое время, так как я сделал программирование winforms, но поскольку я вспоминаю маркировки, прозрачны на значение по умолчанию? таким образом его единственное, текст, который получает фактический цвет и цвет bacground, подражает тому, что находится позади него:)
Можно делать именно то, что вы хотите достичь. Это займет немного времени, чтобы поиграть с элементами управления. Можно создать элемент управления Label с прозрачным фоном и поместить его поверх элемента управления Progressbar.
Проверьте мой ответ на еще один вопрос SO.
Что касается объяснения вашей проблемы, окна не обеспечивают прозрачности для элементов управления фоном, как вы ожидаете - я предполагаю, что серый фон на самом деле является поверхностью формы. любые элементы управления, нарисованные между поверхностью формы и вашей меткой, игнорируются.
Выберите BackColor , перейдите на вкладку Интернет и выберите "Прозрачный". Создает следующее.
this.label1.BackColor = System.Drawing.Color.Transparent;