Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скорость прорисовки графических построений 
:(
    Опции темы
ShamanK
Дата 26.2.2010, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



подскажите пожалуйста методы при которых скорость прорисовки ломанных линий была бы МАКСИМАЛЬНОЙ. 

необходимо отрисовывать в режиме реального времени тиковый  график цены акции.  ( линия - изменения в цене происходят очень быстро, когда раз в секунду когда медленней, но чаще всего по несколько изменений в секунду) 

Это сообщение отредактировал(а) ShamanK - 26.2.2010, 23:07
PM MAIL   Вверх
xXxSataNxXx
Дата 27.2.2010, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 25.12.2009

Репутация: 1
Всего: 1



Вопрос не совсем понятен, поподробней немного можно?
PM MAIL   Вверх
ShamanK
Дата 27.2.2010, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



я пишу ( по крайней мере пытаюсь )))  )  привод для торговли на фондовом рынке.

есть поставщик котировок - удаленный комп
есть интерфейс апи к серверу

и есть моя программа, которая через апи слушает сервер. 

каждое событие это новая цена, все изменения цен я должен объединить в ломанную линию..  

суть вопроса в том, что поскольку события могут приходить ну ОЧЕНЬ часто - по несколько в секунду, то возникает вопрос каким методом рисовать эту линию чтобы она  рисовалась в реальном режиме времени и не тормозила.

PM MAIL   Вверх
xXxSataNxXx
Дата 27.2.2010, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 25.12.2009

Репутация: 1
Всего: 1



Скорость будет одниковая в любом случает... GDI+ не самое скоростное решение для рисовании, но DirectX использовать было бы смешно... =0)
Так что GDI+...
Тут ещё всё зависит от того, как именно ты хочешь рисовать, можно рисовать одним цветом, но думаю на бирже это не целеобразно, так что остаётся 1 вариант, создать массив точек и через цикл проверять их и рисовать линии синим и красным например...

Это сообщение отредактировал(а) xXxSataNxXx - 27.2.2010, 01:02
PM MAIL   Вверх
diadiavova
Дата 27.2.2010, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



А какой смысл вносить изменения чаще раза в секунду? Не важно как часто меняется информация, человек её может воспринимать с ограниченной скоростью. Хотя согласен гди+ вполне достаточно даже при более частом обновлении, будет тормозить - двойная буферизация поможет.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
ShamanK
Дата 27.2.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



спасибо за ответы. 
можно поподробней про двойную буферизацию? что это и с чем едят? 

я пишу скальперского полуробота, скальпинг это сделка длящаяся секунды.. потому мне и надо отрисовывать каждое изменение цены.
PM MAIL   Вверх
diadiavova
Дата 27.2.2010, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142





--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
ShamanK
Дата 27.2.2010, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



прочел
такой вопрос
на сайте мсдн предлагают в конструкторе поставить тру напротив двойной буферизации. в этом варианте  все элементы формы будут проходить через двойную буферизацию?

тоесть просто поставить галочку и больше ничего делать не надо? просто рисовать? 

качнул пример с инета: 

Код

    'Пример по материелям книги Аппельмана "Переход на VB.Net стратегии, концепции, код
    Private Sub cmdDraw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDraw.Click
        'Создаем объект графики
        Dim g As Graphics
        'Создаем кисть и определяем ее вид
        Dim b As SolidBrush = New SolidBrush(Color.Beige)
        'получить обьект Graphics
        g = PictureBox1().CreateGraphics()
        'Заливаем Пикчер бокс
        g.FillRectangle(b, PictureBox1().ClientRectangle)
        'Переменная шрифта
        Dim f As Font = New Font(Me.Font, FontStyle.Bold)
        'Печатаем текст
        g.DrawString("Пример VB.net графики", f, Brushes.Black, 10, 10)
        'Рисуем квадрат
        g.DrawRectangle(Pens.Blue, 50, 50, 50, 50)
        'Рисуем линию
        g.DrawLine(Pens.Red, 50, 50, 150, 150)
        'Освобождаем базовые обьекты GDI
        g.Dispose()
        b.Dispose()
        f.Dispose()
    End Sub


вопрос достаточно ли на главной форме свойству двойной буферизации поставить значение ТРУ и с помощью вышеприведенного кода рисовать график в PictureBox расположенном на этой форме ? или это вообще не GDI+?
PM MAIL   Вверх
diadiavova
Дата 27.2.2010, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(ShamanK @  27.2.2010,  11:00 Найти цитируемый пост)
вопрос достаточно ли на главной форме свойству двойной буферизации поставить значение ТРУ и с помощью вышеприведенного кода рисовать график в PictureBox расположенном на этой форме ?

 smile Точнее сказать...это свойство наследуется формой от контрола, стало быть оно есть у всех контролов и его можно установить тру для конкретного контрола(только почему это должен быть обязательно пикчербокс? создай собственный контрол и рисуй в нём).


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
ShamanK
Дата 27.2.2010, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



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

PS хотя в моем случае быстрей будет работать стандартный контрол )) ибо если я создам свой то он будет тормозной до ужаса.. 
PM MAIL   Вверх
xXxSataNxXx
Дата 27.2.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 25.12.2009

Репутация: 1
Всего: 1



Сколькими цветами ты рисовать хочешь?
Если 1 то это легче пареной репы будет для тебя, а если 2 и более, то посложнее...
PM MAIL   Вверх
ShamanK
Дата 27.2.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



одна линия = один цвет

линий несколько
PM MAIL   Вверх
xXxSataNxXx
Дата 27.2.2010, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 25.12.2009

Репутация: 1
Всего: 1



Создай массив точек и рисуй...
Код

dim p() as point={ new point(100,100), new point(150,100)}
dim gp as graphicspath
gp.addlines(p)
picturesbox1.creategraphics.drawpath(pen.black,gp)


Это сообщение отредактировал(а) xXxSataNxXx - 27.2.2010, 13:39
PM MAIL   Вверх
ShamanK
Дата 27.2.2010, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



нет нет .. на открытие это форма условия торговли.. чутка объясню

скальпинг очень высоко рискованный стиль торговли.. программа заточена на нажатие клавиш на клаве.. 

чтобы при открытой программе (главной форме) случайно не нажать быстрые клавиши которые приведут к открытию сделок я сделал следующее:
кликаю по кнопке - открывается форма TAlert, навожу на нее мышку, она окрашивается в зеленый цвет, и только после этого быстрые клавиши на клаве приводят к торговым действиям, если мышка не на форме TAlert она окрашивается в красный цвет ( тоесть торговли нет) и я могу клацать по клаве сколь угодно долго, к торговым действиям это не приведет.. 
так что график на этой форме не рисуется, он рисуется на главной форме 
PM MAIL   Вверх
xXxSataNxXx
Дата 27.2.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 25.12.2009

Репутация: 1
Всего: 1



Тогда смотри сообщение выше, я его отредактировал и снял те вопросы...=0)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0591 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.