Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: Rus-Skipper.narod.ru
 Профиль | | #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-сайт: Rus-Skipper.narod.ru
 Профиль | | #8
Добавлено: 03.07.07 09:35
Игорь, посмотри внимательнее код работает с файлами BMP, ICO это только расширение.
Изменение размеров выложу когда yandex пустит в мастерскую, что то временно закрыли доступ.

Ответить

Номер ответа: 9
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #9
Добавлено: 03.07.07 12:09
Private Type POINTAPI
   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
    ;DeleteObject hRgn
End Sub
Private Sub Form_Resize()
    Me.ScaleMode = vbPixels
    Me.FillStyle = vbSolid
    Me.FillColor = vbRed
    Form_Paint
End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам