Проблема такая.
их даже несколько
1) есть код.
- Код: Выделить всё
Private Sub Picture1_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Static b As Double
Static c As Double
Picture1.Line (0, 0)-(b, c), vbWhite
Picture1.Line (0, 0)-(X, Y)
b = X
c = Y
End Sub
как вы уже догатываетесь, при движение мышки по Картинке, за курсором тянется линия (из верхнего левого угла)
потом при нажатие (что-то типо этого)
- Код: Выделить всё
Private Sub Picture1_MouseUp(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then Picture1.Line (0, 0)-(X, Y)
End Sub
должна высвечиваться и ОСТАВТЬСЯ на картинке линия от верхнего левого угла до координат курсора мышки во время нажитии левой кнопки.
Так оно и происходит, но в след. момент это линия ЗАКРАШИВАЕТСЯ белой из события MouseMove...
как поступить?
по идее это должен быть ввод многоугольника (типа как в Paint)
(ессено, что все вершины должны запоминаться, это легко)
решение я одно вижу, это при каждом движение мышки перерисовывать все грани по запомненным вершинам, но если вершин много, то это как-то не очень.. ну не знаюю... не оптимально, чтоли...
ну да. линию при перемещение мышки можно и не рисовать,можно просто строить прямую между 2х точек-кликов, но с рисованием нагляднее. =)
задача в общем:
реализация алгоритмов затравки и заполнения многоугольников (такие как закраска с упорядоченным списком рёбер, закрачка по рёбрам, с "перегородкой", с "флагом", построчный затравочный и тд).
2) кстати ещё вопрос, как определить цвет пиксела в Picture? знаю, что есть метод POINT? можно по-подробнее.
3) можно ли просто поставить центр отсчёта координат в центр Picture и не задавать сам масштаб при помощи Scale? Просто мне нужен такой масштаб, чтоб каждый пиксел в отдельности можно было васветить, а с экранной сисетемой координат очень неудобно.
при помощи Scale тяжело подобрать нормальный масштаб...
Спасибо!