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

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

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

Хотелось бы узнать, можно установить изображение как фон в ListBox?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2014, 08:28
Ответы с готовыми решениями:

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

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

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

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

9
Модератор
8022 / 2966 / 797
Регистрация: 22.02.2013
Сообщений: 4,253
Записей в блоге: 78
15.12.2014, 09:03 2
Можно, обрабатывай сообщение WM_CTLCOLORLISTBOX родителя листбокса.
1
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 11
15.12.2014, 09:04  [ТС] 3
Не подскажете как? Я в этом "дуб дубом"...
Ну или пример кода
0
Модератор
8022 / 2966 / 797
Регистрация: 22.02.2013
Сообщений: 4,253
Записей в блоге: 78
15.12.2014, 09:07 4
Цитата Сообщение от Vladneu Посмотреть сообщение
Ну или пример кода
Используй сабклассинг, а обработку сообщения смотри тут (процедура WndProc)
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 11
16.12.2014, 16:54  [ТС] 5
Цитата Сообщение от The trick Посмотреть сообщение
Используй сабклассинг, а обработку сообщения смотри тут (процедура WndProc)
Всё-равно не могу понять. Хоть убейте!
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 11
16.12.2014, 17:25  [ТС] 6
Никак не могу понять, как изменить вид "Slider". Могли бы вы подсказать что да как?
Желательно поподробнее, просто многого не знаю пока.
0
Модератор
8022 / 2966 / 797
Регистрация: 22.02.2013
Сообщений: 4,253
Записей в блоге: 78
16.12.2014, 19:08 7
Распиши подробней что хочешь.
0
11013 / 3463 / 598
Регистрация: 13.02.2009
Сообщений: 10,305
17.12.2014, 03:28 8
TickStyle
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 11
17.12.2014, 10:50  [ТС] 9
Цитата Сообщение от The trick Посмотреть сообщение
Распиши подробней что хочешь.
Убрать этот белый фон элемента, ну или сделать его прозрачным
0
Модератор
8022 / 2966 / 797
Регистрация: 22.02.2013
Сообщений: 4,253
Записей в блоге: 78
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 Кб, 20 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2014, 20:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

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