Страница: 1 |
Страница: 1 |
Вопрос: Заливка выделения
Добавлено: 02.07.07 12:25
Автор вопроса: Игорь | ICQ: 457394129
Подскажите, каким образом можно залить цветом фигуру полученную в результате соединения нескольких проиндексированных линий (Line)?
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 02.07.07 18:25
Что есть проиндексированные линии?
<telepat mode>
Google: Возможно вы имели ввиду FloodFill/ExtFloodFill ?
</telepat mode>
Номер ответа: 2
Автор ответа:
Игорь
ICQ: 457394129
Вопросов: 52
Ответов: 133
Профиль | | #2
Добавлено: 02.07.07 18:30
Ну короче, у меня на форме есть одна линия с индексом 0-Line(0). Одной функцией я копирую эту линию и задаю её необходимые координаты. Скопированый элемент имеет индекс (следующий)-1, и так далее. При всех копированиях у меня в итоге получается замкнутая фигура из линий. И вопрос состоит в том как её залить, точнее сделать фон у этой фигуры?!
Номер ответа: 3
Автор ответа:
Игорь
ICQ: 457394129
Вопросов: 52
Ответов: 133
Профиль | | #3
Добавлено: 02.07.07 18:43
Если кто не понял о чём идёт речь, вот выкладываю ссылку с собственным примером:
http://slil.ru/24583074
Номер ответа: 4
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #4
Добавлено: 03.07.07 00:46
А чем ты заливать собрался? Тоже проиндексированными линиями? Или тебе надо вычислить все вершины многоугольника по которому тыкнули мышой, чтобы потом по ним рисовать фигуру определенного цвета.
Второе, ИМХО, правильнее.
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 03.07.07 04:29
Имхо лучше перерисовать линии методом Line, тогда вышенаписанные апи рулят и никаких проблем..
Номер ответа: 6
Автор ответа:
Боцман
ICQ: 295725312
Вопросов: 53
Ответов: 830
Web-сайт:
Профиль | | #6
Добавлено: 03.07.07 07:03
http://rus-skipper.narod.ru/raznoe/Linu.zip Возьми пример с заливкой.
Номер ответа: 7
Автор ответа:
Игорь
ICQ: 457394129
Вопросов: 52
Ответов: 133
Профиль | | #7
Добавлено: 03.07.07 07:09
Боцман огромное спасибо за пример-прямо в точку угадал, как мне надо!
Номер ответа: 8
Автор ответа:
Боцман
ICQ: 295725312
Вопросов: 53
Ответов: 830
Web-сайт:
Профиль | | #8
Добавлено: 03.07.07 09:35
Игорь, посмотри внимательнее код работает с файлами BMP, ICO это только расширение.
Изменение размеров выложу когда yandex пустит в мастерскую, что то временно закрыли доступ.
Номер ответа: 9
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #9
Добавлено: 03.07.07 12:09
X As Long
Y As Long
End Type
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As Any, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
Private Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long
Private Declare Function GetStockObject Lib "gdi32" (ByVal nIndex As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Const ALTERNATE = 1
Const WINDING = 2
Const BLACKBRUSH = 4
Private Sub Form_Paint()
Dim poly(1 To 3) As POINTAPI
Dim NumCoords As Long, hBrush As Long, hRgn As Long
Me.Cls
NumCoords = 3
poly(1).X = Form1.ScaleWidth / 2
poly(1).Y = Form1.ScaleHeight / 2
poly(2).X = Form1.ScaleWidth / 4
poly(2).Y = 3 * Form1.ScaleHeight / 4
poly(3).X = 3 * Form1.ScaleWidth / 4
poly(3).Y = 3 * Form1.ScaleHeight / 4
Polygon Me.hdc, poly(1), NumCoords
'hBrush = GetStockObject(BLACKBRUSH)
hRgn = CreatePolygonRgn(poly(1), NumCoords, ALTERNATE)
If hRgn Then FillRgn Me.hdc, hRgn, hBrush
 eleteObject hRgn
End Sub
Private Sub Form_Resize()
Me.ScaleMode = vbPixels
Me.FillStyle = vbSolid
Me.FillColor = vbRed
Form_Paint
End Sub