Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Vladneu
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 11
1

Фоновое изображение на ListBox и Slider

15.12.2014, 08:28. Просмотров 1149. Ответов 9
Метки нет (Все метки)

Хотелось бы узнать, можно установить изображение как фон в ListBox?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2014, 08:28
Ответы с готовыми решениями:

Фоновое изображение
Всем привет. Я верстаю страницу, у которой есть фоновое изображение. В css для фона прописаны...

Фоновое изображение
Как сменить фоновое изображение после клика по кнопке "Создать" в меню ... private void...

фоновое изображение
Нужно сделать фоновое изображение как на этом сайте (дорога с машиной), В том смысле, чтобы...

Фоновое изображение
Облазил интернет, мало чего нашел. Помогите новичку) Нужно поставить изображение как фон.

Фоновое изображение
Как сделать фон как на кинопоиске http://www.kinopoisk.ru/film/9544/. Имею ввиду, что у них в...

9
The trick
Модератор
7783 / 2794 / 776
Регистрация: 22.02.2013
Сообщений: 3,942
Записей в блоге: 77
15.12.2014, 09:03 2
Можно, обрабатывай сообщение WM_CTLCOLORLISTBOX родителя листбокса.
1
Vladneu
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 11
15.12.2014, 09:04  [ТС] 3
Не подскажете как? Я в этом "дуб дубом"...
Ну или пример кода
0
The trick
Модератор
7783 / 2794 / 776
Регистрация: 22.02.2013
Сообщений: 3,942
Записей в блоге: 77
15.12.2014, 09:07 4
Цитата Сообщение от Vladneu Посмотреть сообщение
Ну или пример кода
Используй сабклассинг, а обработку сообщения смотри тут (процедура WndProc)
0
15.12.2014, 09:07
Vladneu
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 11
16.12.2014, 16:54  [ТС] 5
Цитата Сообщение от The trick Посмотреть сообщение
Используй сабклассинг, а обработку сообщения смотри тут (процедура WndProc)
Всё-равно не могу понять. Хоть убейте!
0
Vladneu
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 11
16.12.2014, 17:25  [ТС] 6
Никак не могу понять, как изменить вид "Slider". Могли бы вы подсказать что да как?
Желательно поподробнее, просто многого не знаю пока.
0
The trick
Модератор
7783 / 2794 / 776
Регистрация: 22.02.2013
Сообщений: 3,942
Записей в блоге: 77
16.12.2014, 19:08 7
Распиши подробней что хочешь.
0
Alex77755
10942 / 3432 / 590
Регистрация: 13.02.2009
Сообщений: 10,188
17.12.2014, 03:28 8
TickStyle
0
Vladneu
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 11
17.12.2014, 10:50  [ТС] 9
Цитата Сообщение от The trick Посмотреть сообщение
Распиши подробней что хочешь.
Убрать этот белый фон элемента, ну или сделать его прозрачным
0
The trick
Модератор
7783 / 2794 / 776
Регистрация: 22.02.2013
Сообщений: 3,942
Записей в блоге: 77
17.12.2014, 20:41 10
Лучший ответ Сообщение было отмечено Vladneu как решение

Решение

Вот пример, можешь сделать фоновый рисунок на форме и разместить элементы на нем. Для смены фона нужно перехватывать сообщения WM_CTLCOLOR* (для каждого элемента свой):
Visual Basic
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Option Explicit
 
Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SetBrushOrgEx Lib "gdi32" (ByVal hdc As Long, ByVal nXOrg As Long, ByVal nYOrg As Long, lppt As Any) As Long
Private Declare Function MapWindowPoints Lib "user32" (ByVal hwndFrom As Long, ByVal hwndTo As Long, lppt As Any, ByVal cPoints As Long) As Long
Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As Any, ByVal bErase As Long) As Long
Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
 
Private Const TRANSPARENT           As Long = 1
Private Const WM_CTLCOLORLISTBOX    As Long = &H134
Private Const WM_CTLCOLORSTATIC     As Long = &H138
Private Const WM_VSCROLL            As Long = &H115
 
Dim WithEvents wndProc  As clsTrickSubclass ' Объект для сабклассинга формы
Dim WithEvents lstProc  As clsTrickSubclass ' Объект для сабклассинга списка
 
Dim hBackBrush  As Long ' Фоновая кисть
 
Private Sub Form_Load()
    ' Создаем кисть для отрисовки фона на основе фонового изображения формы
    hBackBrush = CreatePatternBrush(Me.Picture.Handle)
    ' Сабклассинг формы
    Set wndProc = New clsTrickSubclass
    Set lstProc = New clsTrickSubclass
    
    wndProc.Hook Me.hwnd
    lstProc.Hook lstTestList.hwnd
    
    ' Добавляем в список тестовые значения
    Do While lstTestList.ListCount < 100
        lstTestList.AddItem Format(lstTestList.ListCount, "ITE\M 00")
    Loop
    
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    ' Удаляем кисть
    DeleteObject hBackBrush
End Sub
 
' Оконная процедура списка
Private Sub lstProc_wndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long, Ret As Long, DefCall As Boolean)
    
    Select Case Msg
    ' При прокрутке списка
    Case WM_VSCROLL
        ' Объявляем всю область списка недействительной и требующей перерисовки
        InvalidateRect hwnd, ByVal 0&, 0
    End Select
    ' Вызов по умолчанию
    DefCall = True
    
End Sub
 
' Оконная процедура формы
Private Sub wndProc_WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long, Ret As Long, DefCall As Boolean)
    
    Select Case Msg
    ' При запросе кисти фона списка или слайдера
    Case WM_CTLCOLORSTATIC, WM_CTLCOLORLISTBOX
        Dim pts(1)  As Long
        ' Получаем координаты элемента
        MapWindowPoints lParam, Me.hwnd, pts(0), 1
        ' Сдвигаем точку отсчета координат кисти, чтобы она совпадала с фоновом изображением под контролом
        SetBrushOrgEx wParam, -pts(0), -pts(1), ByVal 0&
        ' Если это список
        If lParam = lstTestList.hwnd Then
            ' Устанавливаем прозрачный фон для текста
            SetBkMode wParam, TRANSPARENT
            ' Устанавливаем цвет текста
            SetTextColor wParam, vbWhite
        
        End If
        ' Возвращаем кисть
        Ret = hBackBrush
        
    Case Else:  DefCall = True  ' Остальное оставляем без изменений
    End Select
    
End Sub
3
Миниатюры
Фоновое изображение на ListBox и Slider  
Вложения
Тип файла: rar ChangeBkgnd.rar (74.0 Кб, 19 просмотров)
17.12.2014, 20:41
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2014, 20:41

Фоновое изображение
Всем привет думаю эта тема сейчас актуальна так как я не раз пытался нати в поисковике как же...

Фоновое изображение
Всем привет! есть картинка размером 5000x3750 она подставлена фоном при выставлении...

Фоновое изображение
Всем есть здрасти! Я вот веб мастером хочу стать, мечтаю о своем проекте, kinopro.ru кинотека......


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru