pachela Опубликовано 28 января, 2018 Поделиться Опубликовано 28 января, 2018 В общем то название не знал как правильно придумать, так что не обессудьте.Суть дела такова, создаю форму и форму 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(); Криво, косо, пока что с топорными вставками, но работает и работает так как надо. Кроме отображаемого текста!!! А именно, это белая тень возле него. Так вот и вопрос, как убрать вот эту тень? Она мешает, нереально мешает и ухудшает читабельность. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 28 января, 2018 Поделиться Опубликовано 28 января, 2018 2 часа назад, pachela сказал: Так вот и вопрос, как убрать вот эту тень? Вот что нашел: Во всех компонентах цвет фона определяется свойством Color, а цвет надписи — подсвойством Color свойства Font. Если цвет фона специально не задавать, то цвет фона обычно сливается с цветом контейнера, содержащего метку, так что фон просто не заметен. Так что может ты зря задаешь цвет фона Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 28 января, 2018 Автор Поделиться Опубликовано 28 января, 2018 3 минуты назад, Garik66 сказал: Вот что нашел: Во всех компонентах цвет фона определяется свойством Color, а цвет надписи — подсвойством Color свойства Font. Если цвет фона специально не задавать, то цвет фона обычно сливается с цветом контейнера, содержащего метку, так что фон просто не заметен. Так что может ты зря задаешь цвет фона Я изначально не задавал. Просто решил попробовать. Выхлоп одни и тот же =( Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 28 января, 2018 Поделиться Опубликовано 28 января, 2018 3 минуты назад, pachela сказал: Я изначально не задавал. Просто решил попробовать. Выхлоп одни и тот же =( Может тень - фишка, выбранного тобою шрифта, не пробовал другой шрифт? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 28 января, 2018 Поделиться Опубликовано 28 января, 2018 2 hours ago, pachela said: Я изначально не задавал. Просто решил попробовать. Выхлоп одни и тот же =( Поковырялся в CE LUA: попробуй вместо: label1.BackColor = Color.Transparent; Просто активировать прозрачность лайбла: label1.Transparent = true; Spoiler Spoiler Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 28 января, 2018 Автор Поделиться Опубликовано 28 января, 2018 2Garik66 Прикол в том, что это не CE Lua, а С№. Когда вся форма делается прозрачной, лейбл тоже прозрачен. Это фишка самого текста. А вот как от нее избавиться, когда то в гугле встречал, случайно, теперь найти не могу. =( Ссылка на комментарий Поделиться на другие сайты Поделиться
saiberpro Опубликовано 28 января, 2018 Поделиться Опубликовано 28 января, 2018 (изменено) Окна WinForm не могут быть прозрачными полностью. Обрати внимание на Note Но вашу проблему можно решить если написать собственный User_Control. Либо как вариант вы можете попробовать: SetStyle (ControlStyles.SupportsTransparentBackColor, true ); this.BackColor = Color.Transparent;//Свойство вашего компонента Изменено 28 января, 2018 пользователем saiberpro Ссылка на комментарий Поделиться на другие сайты Поделиться
X86Jumps Опубликовано 28 января, 2018 Поделиться Опубликовано 28 января, 2018 может через gdi лучше рисовать? Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 28 января, 2018 Автор Поделиться Опубликовано 28 января, 2018 Спасибо всем. Уже прочитал, что эта тень на форме, которая не полностью прозрачна. Советуют все это реализовывать в WPF. Вобщем то я от этого далек. Мне нужна миниатюрная формочка, с парой лейблов и в них передавать текст. Так что учусь и читаю дальше. Ссылка на комментарий Поделиться на другие сайты Поделиться
saiberpro Опубликовано 29 января, 2018 Поделиться Опубликовано 29 января, 2018 20 часов назад, pachela сказал: в них передавать текст Не умею читать мысли, но как вариант могу предложить передавать не в label а в метод MessageBox.Конечно в зависимости от вашей задачи. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения