Приделать к иконке стрелку (ярлык для)

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

Приделать к иконке стрелку (ярлык для)

Сообщение Alexanbar » 13.01.2006 (Пт) 17:10

Есть STDPicture с иконкой. Требуется пририсовать стрелку внизу.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.01.2006 (Пт) 17:16

Скопировать на PictureBox и подрисовать?
Лучший способ понять что-то самому — объяснить это другому.

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

Сообщение Alexanbar » 13.01.2006 (Пт) 18:58

Без контролов. Имеется ввиду, что вторая картинка (стрелка) тоже есть (например, в Imagelist). А первая извлекается из разных файлов. Надо их скомбинировать программно.
Результат будет помещаться в Imagelist для последующего использования в Listview.
Последний раз редактировалось Alexanbar 13.01.2006 (Пт) 18:59, всего редактировалось 1 раз.

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

Сообщение alibek » 13.01.2006 (Пт) 18:59

У ImageList есть метод Draw.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение Alexanbar » 13.01.2006 (Пт) 19:01

alibek писал(а):У ImageList есть метод Draw.


Не пойдёть. Раз требуется hdc, значит нужно куда-то это рисовать. Похоже, это не сильно отличается от DrawIconEx.
Можно, конечно, так:
Код: Выделить всё
Dim iPic As IPictureDisp
Set iPic = Me.ImageList1.Overlay(1, 2)
Me.ImageList1.ListImages.Add , , iPic
'Me.Picture = iPic
Set ListView1.Icons = Me.ImageList1
Set ListView1.SmallIcons = Me.ImageList1
ListView1.ListItems.Add , , "ssss", 3, 3
ListView1.ListItems.Add , , "ssss2", 3, 3


но тогда в Imagelist будет дополнительно храниться неиспользуемая иконка (без стрелки).
Вот чем бы реализовать аналог метода overlay без Imagelist?

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 14.01.2006 (Сб) 20:28

MemDC?
Моду создают модоки, а распространяют модозвоны.

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

Сообщение Alexanbar » 14.01.2006 (Сб) 22:56

hCORe писал(а):MemDC?


С чем это едят?

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 15.01.2006 (Вс) 13:08

Alexanbar писал(а):
hCORe писал(а):MemDC?


С чем это едят?

Код: Выделить всё

Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function SetTextColor Lib "gdi32.dll" (ByVal hdc As Long, ByVal crColor As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
Dim ndc As Long, nbit As Long, rct As RECT
Private Sub Command1_Click()
ndc = CreateCompatibleDC(Me.hdc)
nbit = CreateCompatibleBitmap(hdc, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY)
SelectObject ndc, nbit
SetBkMode ndc, 1
SetTextColor ndc, vbBlue
TextOut ndc, 100, 0, "Test String", 11
Call Form_Paint
End Sub

Private Sub Form_Paint()
BitBlt hdc, 0, 0, me.width/screen.twipsperpixelx,me.height/screen.twipsperpixely, ndc, 0, 0, vbSrcCopy
End Sub

Если всё делать своими ручками, они скоро отвалятся !


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

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

Сейчас этот форум просматривают: Google-бот и гости: 93

    TopList