Тайлинг текстуры в hDC

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
udpn
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 24.07.2007 (Вт) 11:43

Тайлинг текстуры в hDC

Сообщение udpn » 03.09.2007 (Пн) 18:40

Подскажите пожалуйста, как прорисовать в hDC затайленую текстуру. Т.е. заполнить его целиком повторениями рисунка из другого hDC.
Не ищите смысла там, где его не ложили (c) проф. В.В. Горяйнов

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.09.2007 (Пн) 18:54

CreatePatternBrush, FillRect
Изображение

udpn
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 24.07.2007 (Вт) 11:43

Сообщение udpn » 03.09.2007 (Пн) 19:01

откуда взять hBitmap? LoadImage? Picture.Handle?

короче говоря есть PictureBox c картинкой, которую надо нарисовать на TextBox с помощью SRC OR IMG.

Код: Выделить всё
Public Sub Hook()
    OldSub = SetWindowLong(frmMain.TestBox.hwnd, -4, AddressOf WndProc)
    DC = GetWindowDC(frmMain.TestBox.hwnd)
    'With frmMain.picSrc
        '.Picture = LoadPicture(App.Path & "\pic.bmp")
'        .PaintPicture .Picture, 0, 0, .ScaleWidth, .ScaleHeight, 0, 0, .ScaleWidth, .ScaleHeight
        'BR = CreatePatternBrush(.Picture.Handle)
        'Debug.Print LoadImage(0, App.Path & "\pic.bmp" & vbNullChar, 0, 0, 0, 0)
        BR = CreatePatternBrush(LoadImage(0, App.Path & "\pic.bmp" & vbNullChar, 0, 0, 0, 0))
    'End With
    mDC = frmMain.picSrc.hdc
End Sub

Public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal Param1 As Long, ByVal Param2 As Long) As Long
   On Error Resume Next
   Dim r As RECT
    WndProc = CallWindowProc(OldSub, hwnd, Msg, Param1, Param2)
    Select Case Msg
        Case &H100E, &HF, &H101, &H84, &H20, &H200, &HA0, &H21, &H201, &H215, &H202, &H203, &H204, &H121, &H11F, &H7B, &H205, &H20A, &H207, &H208, &HB1, &HC2, &H302, &H102, &H301, &H307, &H300, &H18, &H306, &H82
            'BitBlt DC, 0, 0, 16, 16, mDC, 0, 0, vbMergePaint
            'StretchBlt DC, 0, 0, frmMain.TestBox.Width, frmMain.TestBox.Height, _
                       mDC, 0, 0, frmMain.picSrc.ScaleWidth, frmMain.picSrc.ScaleHeight, vbMergePaint
            GetClientRect frmMain.TestBox, r
            FillRect DC, r, BR
    End Select
End Function
Не ищите смысла там, где его не ложили (c) проф. В.В. Горяйнов

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.09.2007 (Вт) 10:05

Ну и зачем тебе PictureBox c картинкой? Он же стопудов у тебя невидимый. Юзай просто объект Picture.
Изображение

udpn
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 24.07.2007 (Вт) 11:43

Сообщение udpn » 04.09.2007 (Вт) 19:38

вопрос есть: почему тот код который я использую не работает?
Не ищите смысла там, где его не ложили (c) проф. В.В. Горяйнов


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList  
cron