Перейти к содержанию

C# настройки текста в Label


Рекомендуемые сообщения

В общем то название не знал как правильно придумать, так что не обессудьте.Суть дела такова, создаю форму и форму 2, во второй форме используя WinAPI. 

Скрытый текст



public partial class Form2 : Form
    {        

        private const int SW_SHOWNOACTIVATE = 4; //неактивна
        private const int HWND_TOPMOST = -1; //поверх всех окон, включая топовые
        private const uint SWP_NOACTIVATE = 0x0010;
        public static int flag = 1;

        //функция winapi показывает окно
        [DllImport("user32.dll")]
        static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

        //функция winapi показывает окно
        [DllImport("user32.dll", EntryPoint = "SetWindowPos")]
        static extern bool SetWindowPos(int hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);

        public Form2()
        {
            InitializeComponent();
            Style();
        }        

        private void Style()
        {
            this.FormBorderStyle = FormBorderStyle.FixedToolWindow;
            this.ShowInTaskbar = false;
            this.AllowTransparency = true;
            this.BackColor = Color.AliceBlue;//цвет фона  
            this.TransparencyKey = this.BackColor;//он же будет заменен на прозрачный цвет
            this.ControlBox = false;
            this.MaximizeBox = false;
            label1.BackColor = Color.Transparent;
        }

        public void ShowWindow()
        {
            ShowWindow(Handle, SW_SHOWNOACTIVATE);
            SetWindowPos(Handle.ToInt32(), HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE);
        }

        private void Form2_DoubleClick(object sender, EventArgs e)
        {
            if (flag == 1)
            {
                this.FormBorderStyle = FormBorderStyle.None;
                flag = 0;
            }
            else
            {               
                this.FormBorderStyle = FormBorderStyle.FixedToolWindow;
                flag = 1;
            }
        }
    }


 

Вызываем это все кликом по кнопке в первой форме:

Form2 frm = new Form2();
            frm.ShowWindow();

Криво, косо, пока что с топорными вставками, но работает и работает так как надо. Кроме отображаемого текста!!! А именно, это белая тень возле него.

unknown.png

Так вот и вопрос, как убрать вот эту тень? Она мешает, нереально мешает и ухудшает читабельность.

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, pachela сказал:

Так вот и вопрос, как убрать вот эту тень?

Вот что нашел:

Во всех компонентах цвет фона определяется свойством Color, а цвет надписи — подсвойством Color свойства Font. Если цвет фона специально не задавать, то цвет фона обычно сливается с цветом контейнера, содержащего метку, так что фон просто не заметен.

Так что может ты зря задаешь цвет фона

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, Garik66 сказал:

Вот что нашел:

Во всех компонентах цвет фона определяется свойством Color, а цвет надписи — подсвойством Color свойства Font. Если цвет фона специально не задавать, то цвет фона обычно сливается с цветом контейнера, содержащего метку, так что фон просто не заметен.

Так что может ты зря задаешь цвет фона

Я изначально не задавал. Просто решил попробовать. Выхлоп одни и тот же =(

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, pachela сказал:

Я изначально не задавал. Просто решил попробовать. Выхлоп одни и тот же =(

Может тень - фишка, выбранного тобою шрифта, не пробовал другой шрифт?

  

Ссылка на комментарий
Поделиться на другие сайты

2 hours ago, pachela said:

Я изначально не задавал. Просто решил попробовать. Выхлоп одни и тот же =(

Поковырялся в CE LUA:

попробуй вместо:

label1.BackColor = Color.Transparent;

Просто активировать прозрачность лайбла:

label1.Transparent = true;

 

Spoiler

image.thumb.png.f2ad83fc2656ac9c74de8026d7a60a53.png

 

Spoiler

image.thumb.png.ba0a86df9446e8dec4d0177b510c20cc.png

 

 

Ссылка на комментарий
Поделиться на другие сайты

2Garik66 Прикол в том, что это не CE Lua, а С№. Когда вся форма делается прозрачной, лейбл тоже прозрачен. Это фишка самого текста. А вот как от нее избавиться, когда то в гугле встречал, случайно, теперь найти не могу. =(

Ссылка на комментарий
Поделиться на другие сайты

Окна WinForm не могут быть прозрачными полностью.

Обрати внимание на Note

Но вашу проблему можно решить если написать собственный User_Control.

Либо как вариант вы можете попробовать:

SetStyle (ControlStyles.SupportsTransparentBackColor, true );
this.BackColor = Color.Transparent;//Свойство вашего компонента

 

Изменено пользователем saiberpro
Ссылка на комментарий
Поделиться на другие сайты

Спасибо всем. Уже прочитал, что эта тень на форме, которая не полностью прозрачна. Советуют все это реализовывать в WPF. Вобщем то я от этого далек. Мне нужна миниатюрная формочка, с парой лейблов и в них передавать текст. Так что учусь и читаю дальше.

Ссылка на комментарий
Поделиться на другие сайты

20 часов назад, pachela сказал:

в них передавать текст

Не умею читать мысли, но как вариант могу предложить передавать не в label а в метод MessageBox.Конечно в зависимости от вашей задачи.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.