Как провести линию десяти тысяч точек с WPF в течение 0,5 секунд?

Я использовал Подрывной, так как я обновил до Ganymede. Я использую его с Eclipse в Linux (Ubuntu и Ядро Fedora), Windows XP и Mac OS X.5. Кроме некоторых проблем, получающих Подрывной деятельности 1.5.1 пользоваться правильными библиотеками безопасности в соответствии с Mac OS, у меня не было проблем. Учитывая, что это было принято как технологический проект Eclipse, я склонен сделать свои ставки на него, с точки зрения долгосрочных надежд.

21
задан Peter Mortensen 19 October 2009 в 12:12
поделиться

4 ответа

Я предполагаю, что пример кода - это 1) тест для проверки чего-то, что на самом деле не является образцом, или 2) домашнее задание.

Попробуйте переопределить OnRender и выполните что-то вроде:

Pen drawingPen = new Pen(Brushes.Black, 1);

protected override void OnRender(DrawingContext dc)
{
    dc.DrawRectangle(Background, null, new Rect(RenderSize));


            double x=rand.Next(300);
            double y = rand.Next(300);
            for (double i = 0; i < 1000; i = i + 0.1)
            {
                y = 100 + rand.Next(100);
                dc.DrawLine(drawingPen, new Point(i, x), new Point(i + 1, y));
                x = y;
            }


}

или что-то с реальными данными, подумайте, действительно ли вам нужно отображать каждую точку в зависимости от разрешения визуального контекста. (Если ваша шкала от 0 до 10 и вы набираете 0,0001,0,00015 баллов, действительно ли они отличаются по вашей шкале)

2
ответ дан 29 November 2019 в 20:35
поделиться

Чарльз Петцольд делает именно это. Это даже быстрее на моем хосте (<0,3 секунды), а точки даже DataBound !! ;)

Тамир Хасон делает то же самое, с линиями и более подробно описывает производительность стиля Bitmap WPF здесь .

Рико Мариани дает некоторые рекомендации по высокопроизводительной 3D-графике. По сути, использование типов значений может улучшить вашу пропускную способность, если хорошо продумано.

Цзяньчжун Чжан дает мои новые любимые руководства по этой теме, трехмерный график рассеяния, несколько десятков тысяч анимированных и интерактивных точек данных.

38
ответ дан 29 November 2019 в 20:35
поделиться

Рассматривали ли вы XNA ? Использование видеокарты ускорит процесс.

0
ответ дан 29 November 2019 в 20:35
поделиться

Следует ли выбирать строки? Вы можете рисовать линии на изображении, а затем передавать их в качестве источника для элемента управления Image. Он будет рисовать быстрее, но вы потеряете способность взаимодействовать с линиями.

1
ответ дан 29 November 2019 в 20:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: