Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 | 3 | 4 | 5 | 6 |

 

  Вопрос: Создать ActiveX, подобный объекту line Добавлено: 22.08.06 19:44  

Автор вопроса:  -АлександР- | Web-сайт: sham.clan.su

Ответить

  Ответы Всего ответов: 76  

Номер ответа: 61
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #61 Добавлено: 30.08.06 00:01
Или ты к тому времени уже забудешь о своём предложении?

Напомнишь мне.

Ответить

Номер ответа: 62
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #62 Добавлено: 30.08.06 00:17
2 Brand
АлександР пишет не на дотнете, я понятия не имею, что там в дотнете по поводу GDI, но даже если и есть что-то, в vb6 всёравно придётся на чистом апи всё делать...

Ответить

Номер ответа: 63
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #63 Добавлено: 30.08.06 00:33
В .NET можно использовать GDI, я же говорил - вызовы обычных АПИ не отменили, но, как я говорил, я этого делать не намерен :)

в vb6 всёравно придётся на чистом апи всё делать...

Я не знаю что такое VB6 :)

Ответить

Номер ответа: 64
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #64
Добавлено: 30.08.06 00:51
В .NET можно использовать GDI, я же говорил - вызовы обычных АПИ не отменили,
Слушай, Brand, я только от тебя слышу такие тезисы. Может всё-таки намекнёшь или ключевое словечко дашь, как это делать? (только не говори, что LineTo)

Ответить

Номер ответа: 65
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #65 Добавлено: 30.08.06 01:22
Через него, родимого :)

Ответить

Номер ответа: 66
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #66
Добавлено: 30.08.06 11:53
Ну так это ни чем не лучше джидай-варианта. Я уже пробовал. На джиде+() и то получше/ Это то же, что на vb6 юзать .line. Пробовал - но не получилось. И у тебя - не получится. (ну или получится то же, что и у меня) Т.к. ты тему не хочешь с начала прочитать, сморти овт № 34.

Ответить

Номер ответа: 67
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #67
Добавлено: 30.08.06 11:57
Да и вообще. Я под GDI c самого начала понимал прежде всего line как элемент управления, который существует VB6. А не методы. А ты?

P.S.
Я не знаю что такое VB6 :)
Это шутка или горькая правда?

Ответить

Номер ответа: 68
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #68 Добавлено: 30.08.06 16:40
Да и вообще. Я под GDI c самого начала понимал прежде всего line как элемент управления, который существует VB6. А не методы. А ты?

Я не знаю, что ты там понимаешь под GDI, это твои проблемы.
GDI - это интерфейс, через который можно что-то рисовать, вот и все, хочешь ты этого или нет.

GDI+ - это тоже самое :)

Ответить

Номер ответа: 69
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #69 Добавлено: 30.08.06 16:42
И у тебя - не получится

Когда мне говорили, что это сделать невозможно, я брал и делал то что сделать невозможно (с) Р. Киосаки

Ответить

Номер ответа: 70
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #70
Добавлено: 01.09.06 19:40
Когда мне говорили, что это сделать невозможно, я брал и делал то что сделать невозможно (с) Р. Киосаки
Ты мудр. Мне нравится твоя хватка. Если человек так говорит - значит судьба клыбается ему, и он сделает это. Поэтому
Берись.
Я согласен на условия.

Но только смотри: основные пункты ТЗ
1)событие mousedown на контейнере
2)событие mousemove на контейнере
3)свойство width

Пусть этот код будет опубликован в этой теме. И мы его обсудим. Заодно - голосованием выберем победителя в споре, а точнее - справился ли ты с заданием или нет?

Ok?

P.S. Хотелось бы знать ради любопытства, это будет контрол?

Ответить

Номер ответа: 71
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #71
Добавлено: 03.09.06 00:55
ЭЭЭэээй!!! Brand!!! Загляни в эту тему!

Ответить

Номер ответа: 72
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #72 Добавлено: 03.09.06 01:16
ЭЭЭэээй!!! Brand!!! Загляни в эту тему!

Сори, немного занят по работе сейчас.

1)событие mousedown на контейнере
2)событие mousemove на контейнере

Сори, что понимается под "контейнером"?
Будет контрол, его ложишь на форму, у контрола 2 события - MouseDown и MouseMove, так я понимаю?

P.S. Хотелось бы знать ради любопытства, это будет контрол

Да, контрол.

ЭЭЭэээй!!! Brand!!! Загляни в эту тему!

На надо так много раз подряд писать букву "ээээээ", здесь это может плохо кончиться :)

Ответить

Номер ответа: 73
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #73 Добавлено: 03.09.06 01:41
Не знаю, чем вам регионы не угодили, только что попробовал сделать через регион - вполне нормально работает, никаких тормозов не наблюдается.

Вот набросок, линия делается из PictureBox, при ресайзинге никаких жутких тормозов не замечено.

Для более корректного отображения ширины нужно будет ненмого тригонометрию заюзать.

Public Class Form1

    Const LineWidth As Integer = 10

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub PictureBox1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.Resize
        Dim Pth As New Drawing2D.GraphicsPath
        Dim Points(3) As Point
        Points(0) = New Point(0, -LineWidth)
        Points(1) = New Point(PictureBox1.Width + LineWidth, PictureBox1.Height)
        Points(2) = New Point(PictureBox1.Width, PictureBox1.Height + LineWidth)
        Points(3) = New Point(-LineWidth, 0)
        Pth.AddPolygon(Points)

        Dim Rgn As New Region(Pth)
        PictureBox1.Region = Rgn
    End Sub
End Class


Увы, в этом варианте будет очень сложно добиться антиалиасинга.
т.е. возможно, но тормоза уже будут ощутимы.

Другой вариант который я планировал реализовывать - контрол делается невидимым, подписываемся на событие OnPaint контейнера, при отрисовке рисуем саму линию (уже можно заюзать антиалисаинг), также подписываемся на события MouseMove и MouseDown, при их наступлении проверяем координаты X и Y на факт вхождения/невхождения курсора мыши в линию.

Ответить

Номер ответа: 74
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #74
Добавлено: 03.09.06 13:56
Сори, что понимается под "контейнером"?
то на чем лежит контрол... Я написал контрол VB6, который поддерживает события mouse... Но m/down работает только дя этого контрола. Я делал невидимым как только мог! И все же m/down контейнера (т. е. того, на чем лежит этот контрол - на работало, напр form1)/ Контрол был растянут на весь контейнер и я сделал событие down для него самого - заработало, в то время, как move - работал для контейнера. По видимому этои события хотя и похожи но работают совершенно по разному. Этот недостаток я не мог искоренить. И поэтому и стал искать другие пути - поэтому и подчеркиваю, что
1)событие mousedown на контейнере
2)событие mousemove на контейнере

Мой контрол - здесь:http://sobaka710.narod.ru/lineControl1.rar

Регионы очень сильно тормозили в том случае, если их таскать методами m/move, m/down по форме... ( по кр мере на VB6). Я здесь набросал на VB8. Следующийкод не работает:
Option Explicit On

Public Class Form1
    Dim x1 As Single, x2 As Single, y1 As Single, y2 As Single
    Const LineWidth As Integer = 10

    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
        x1 = e.X : y1 = e.Y
        Label1.Text = "5"
    End Sub

    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        x2 = e.X : y2 = e.Y

    End Sub

    Private Sub PictureBox1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.Resize
        Dim Pth As New Drawing2D.GraphicsPath
        Dim Points(3) As Point
        Points(0) = New Point(x1, y1)
        Points(1) = New Point(x2, y2)
        Points(2) = New Point(PictureBox1.Width, PictureBox1.Height + LineWidth)
        Points(3) = New Point(-LineWidth, 0)
        Pth.AddPolygon(Points)

        Dim Rgn As New Region(Pth)
        PictureBox1.Region = Rgn
    End Sub

End Class
Я еще не перестроился с VB6: как сделать чтобы m/move, m/down работали - не сумел в этом примере. Но думаю, что ты понял, что я имел ввиду, когда говорил "таскать по форме событиями mouse..." Попробуй - как будет тормозить или нет? Стоит идти этим путём или нет?

Увы, в этом варианте будет очень сложно добиться антиалиасинга.
т.е. возможно, но тормоза уже будут ощутимы.
Прошу прощения за неиррудированность: антиалиасинг - это что?

Другой вариант который я планировал реализовывать - контрол делается невидимым, подписываемся на событие OnPaint контейнера, при отрисовке рисуем саму линию (уже можно заюзать антиалисаинг), также подписываемся на события MouseMove и MouseDown, при их наступлении проверяем координаты X и Y на факт вхождения/невхождения курсора мыши в линию.
Посмотри сначала мой контрол на VB6, на который я дал ссылку: не будет повторения истории?

Ответить

Номер ответа: 75
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #75
Добавлено: 04.09.06 13:10
Но только смотри: основные пункты ТЗ
1)событие mousedown на контейнере
2)событие mousemove на контейнере
3)свойство width
Забудь о ТЗ. У меня их всешда не получалось писать; поэтому дубль два:(прошу прощения за нерасторопность)
1)событие mousedown для самой линии
2)событие mousemove для самой линии
3)свойство width для самой линии
И как условие, которое должно быть:
4)mousedown на контейнере
5)mousemove на контейнере

Ответить

Страница: 1 | 2 | 3 | 4 | 5 | 6 |

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



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