Чем заменить метод Render для IpictureDisp?

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

Чем заменить метод Render для IpictureDisp?

Сообщение Alexanbar » 26.11.2006 (Вс) 1:04

Есть картинка (bmp).
Если её отрисовываешь на Picturebox с помощью метода REnder, всё в порядке.
Но если делаешь вот это:
Код: Выделить всё
Dim NMLVCD As NMLVCUSTOMDRAW
dim rct as RECT
......

iPic.Render NMLVCD.nmcd.hdc, _
                                CLng(rct.Right - dltx), _
                                CLng(rct.Bottom - dlty), _
                                CLng(picW), -CLng(picH), _
                                0, _
                                0, _
                                PixelToHimetric(picW), _
                                PixelToHimetric(picH), _
                                0


Ничего не получается. Как я понял, не нравится NMLVCD.nmcd.hdc. Стоит вместо этого поставить ч-л ещё, ругань пропадает, но и рисовать не рисуется.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 26.11.2006 (Вс) 3:18

Ну вроде разобрался. StretchBLT надо использовать

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.11.2006 (Вс) 10:59

Обычно вместо Render рекомендуется использовать PaintPicture.
Lasciate ogni speranza, voi ch'entrate.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 26.11.2006 (Вс) 12:28

Так PaintPicture - это метод Picturebox-a, а если его нет?

Код: Выделить всё
Public Sub StretchBMP(hHandle As Long, _
     hdc As Long, ByVal x As Long, ByVal y As Long, _
     ByVal nWidthPixels As Long, ByVal nHeightPixels As Long, _
     ByVal xSrc As Long, ByVal ySrc As Long, _
     ByVal cxSrc As Long, ByVal cySrc As Long, _
     Optional ByVal dwRop As Long)
On Error GoTo errorHandler

Dim srcDC As Long
Dim oldDC As Long
Dim Ret As Long

srcDC = CreateCompatibleDC(0)
If srcDC <> 0 Then
    oldDC = SelectObject(srcDC, hHandle)
    If oldDC <> 0 Then
        'Now do the copy
        Ret = StretchBlt(hdc, x, y, nWidthPixels, nHeightPixels, _
            srcDC, xSrc, ySrc, cxSrc, cySrc, dwRop)
        'Clean up the device contexts
        Call SelectObject(srcDC, oldDC)
    End If
    Call DeleteDC(srcDC)
End If


errorHandler:
End Sub


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

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

Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 21

    TopList