powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Form1.BackgroundImage + Labels -проблемы с перерисовкой Labels.
2 сообщений из 2, страница 1 из 1
Form1.BackgroundImage + Labels -проблемы с перерисовкой Labels.
    #38434965
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кладу на чистую форму картинку.
Кидаю с 10 стандартных Label
Код вообще отсутствует. Transparent для Label даже не обязательно.
При перерисовке Label перерисовываются отвратительно (белые прямоугольники).

Скажем так, на 7-ке заметно только при появлении формы (при наличии аэро-эффекта появления незаметно).
А вот на XP жуткое зрелище когда елозишь поверх другой формой.
Что за фигня?
...
Рейтинг: 0 / 0
Form1.BackgroundImage + Labels -проблемы с перерисовкой Labels.
    #38434979
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сдается мне что это все что тут можно сделать:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
  Private Const LWA_ALPHA = &H2
  Private Const WS_EX_LAYERED = &H80000
  Private Const GWL_EXSTYLE = -20

  Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongW" _
   (ByVal hwnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer
  Private Declare Function GetWindowLong Lib "user32" Alias _
   "GetWindowLongW" (ByVal hwnd As IntPtr, ByVal nIndex As Integer) As Integer
  Private Declare Function SetLayeredWindowAttributes Lib "user32" _
   (ByVal hwnd As IntPtr, ByVal crKey As Integer, ByVal bAlpha As Byte, ByVal dwFlags As Integer) As Boolean

  Private Sub Form_Load(ByVal sender As Object,
                             ByVal e As System.EventArgs) Handles Me.Load
    Call SetWindowLong(Me.Handle, GWL_EXSTYLE, _
     GetWindowLong(Me.Handle, GWL_EXSTYLE) Or WS_EX_LAYERED)
    Call SetLayeredWindowAttributes(Me.Handle, 0, 0, LWA_ALPHA) 'полностью прозрачна
    TimerAlpha.Interval = 1
    TimerAlpha.Enabled = True
  End Sub

  Private Sub TimerAlpha_Tick(ByVal sender As System.Object,
                              ByVal e As System.EventArgs) Handles TimerAlpha.Tick
    Call SetLayeredWindowAttributes(Me.Handle, 0, 255, LWA_ALPHA) 'полностью НЕпрозрачна
    TimerAlpha.Enabled = False
  End Sub


Причем с Net-овским Opacity так не получится.
Если только жестко не выставить Opacity=99%

Этот же таймер использовать для непрерывного появления/исчезания формы.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Form1.BackgroundImage + Labels -проблемы с перерисовкой Labels.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]