API и графика - FloodFill

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

API и графика - FloodFill

Сообщение Urvin » 22.06.2003 (Вс) 1:31

Вроде бы нашел функцию а АПИ - для заливки картинки чем-то типа цвета. Не работает как хотелось бы. Могет кто знать об этом факте?
Не так страшен русский танк, как его пьяный экипаж

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 22.06.2003 (Вс) 13:20

Перед заливкой, незнаю почему, надо поставить точку в месте заливки - знаю точно, все остольное читай в MSDN

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 24.06.2003 (Вт) 18:30

Urvin писал(а):Вроде бы нашел функцию а АПИ - для заливки картинки чем-то типа цвета. Не работает как хотелось бы. Могет кто знать об этом факте?


Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
Const FLOODFILLBORDER = 0 ' Fill until crColor& color encountered.
Const FLOODFILLSURFACE = 1 ' Fill surface until crColor& color not encountered.
Const crNewColor = &HFFFF80
Dim mBrush As Long
Private Sub Form_Load()
Me.ScaleMode = vbPixels
End Sub
Private Sub Form_Unload(Cancel As Integer)
DeleteObject mBrush
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
mBrush = CreateSolidBrush(RGB(Rnd * 255, Rnd * 255, Rnd * 255))
SelectObject Me.hdc, mBrush
ExtFloodFill Me.hdc, x, y, GetPixel(Me.hdc, x, y), FLOODFILLSURFACE
End Sub

Потести.... Первый раз кликни на форме, потом раздвинь форму и кликни на незакрашенной оласти. Вот и всё... :wink:


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

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

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

    TopList  
cron