Форум программистов, компьютерный форум, киберфорум
XNA/MonoGame
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
1

Как масштабировать нарисованный график

30.11.2012, 14:35. Показов 1585. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день уважаемые форумчане. Я взял Сos(x) и забил эти точки в VertexPositionColor[], добавив к х и у центр экрана. Нарисовав это все на экране получилось что-то похожее в середине экрана но очень мелкое. Что нужно сделать что бы увеличить график?

Добавлено через 12 часов 5 минут
Что никто не знает??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2012, 14:35
Ответы с готовыми решениями:

Как нормально масштабировать график в компоненте Chart?
Такой вот вопрос, при использовании компоненты chart график рисует нормально и масштабирует тоже...

Масштабировать график
Подскажите пожалуйста, как мне масштабировать график не уменьшая количества регистрируемых...

Не выходит масштабировать график cos
Есть график отображающий функцию cos, как масштабировать это???? Были мысли в отрисовке поставить в...

Как масштабировать Chart
Добрый день. Подскажите пожалуйста, как масштабировать Chart? Дело в том, что у меня возникла вот...

10
ImAlexSmith
30.11.2012, 16:11
  #2

Не по теме:

С примером Вашего кода было бы намного легче отвечать, ага :read:

0
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
30.11.2012, 19:20  [ТС] 3
рисую так
C#
1
2
3
4
BasicEffect eff = new BasicEffect(device);
eff.Projection =Matrix.CreateOrthographicOffCenter(0, device.Viewport.Width, device.Viewport.Height, 0, 0,1); 
eff.CurrentTechnique.Passes[0].Apply();
device.DrawUserPrimitives<VertexPositionColor>(PrimitiveType.LineList,vertex, 0, 50);
Добавлено через 1 минуту
vertex это массив типа VertexPositionColor в другом куске кода в него забивается значения от 0 до 10 и косинус этих значений
0
325 / 114 / 7
Регистрация: 01.05.2011
Сообщений: 283
Записей в блоге: 3
30.11.2012, 20:14 4
C#
1
2
3
4
5
6
7
eff.Projection = Matrix.CreateOrthographicOffCenter(0, device.Viewport.Width, device.Viewport.Height, 0, 0,1);
             
             //движение камеры---
             eff.View = Matrix.CreateLookAt(-Vector3.UnitZ, Vector3.Zero, Vector3.Up);
             //--------------------
            
             eff.CurrentTechnique.Passes[0].Apply();
и поиграть с первым аргументом в CreateLookAt.

Т.е. Вы же нарисовали график в пространстве, следовательно проблему масштаба можно решить двумя путями - увеличением самого графика или приближением камеры к нему. Камеру двигать проще обычно.
Отпишитесь потом, а то я не проверял
0
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
30.11.2012, 21:04  [ТС] 5
Цитата Сообщение от ImAlexSmith Посмотреть сообщение
eff.View = Matrix.CreateLookAt(-Vector3.UnitZ, Vector3.Zero, Vector3.Up);
сделал так вообще ничего нет на экране
если убрать минус у первого параметра то появится изображение но масштаб останется прежним

Добавлено через 44 минуты
ImAlexSmith, что скажите
0
325 / 114 / 7
Регистрация: 01.05.2011
Сообщений: 283
Записей в блоге: 3
30.11.2012, 21:41 6
Цитата Сообщение от to Посмотреть сообщение
ImAlexSmith, что скажите
Что-то даже без понятия. Как вариант, можете изменить код генерации этих самых вертексов (*50 в данном случае):
C#
1
2
3
4
5
6
7
        float j = 0;
            for (int i = 0; i < 10000; i++)
            {
                vertex[i].Color = Color.Black;
                vertex[i].Position = new Vector3(j *50 + graphics.PreferredBackBufferWidth/2, (float)Math.Cos(j)*50 + graphics.PreferredBackBufferHeight/2, 0);
                j += 0.1f;
            }
0
444 / 348 / 32
Регистрация: 16.10.2010
Сообщений: 842
Записей в блоге: 7
30.11.2012, 22:23 7
C#
1
2
3
ещё так:
eff.View = Matrix.CreateLookAt(?*Vector3.UnitZ, Vector3.Zero, Vector3.Up) * Matrix.CreateScale(?);
попробуй ещё eff.GraphicDevice.RasterizerState = new RasterizerState(){ CullMode = CullMode.None; }
0
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
01.12.2012, 00:27  [ТС] 8
za5, я так понял вместо ? должно быть число. если больше 1, то вообще ничего нет на экране

Добавлено через 6 минут
za5, RasterizerState тоже не помогло
0
444 / 348 / 32
Регистрация: 16.10.2010
Сообщений: 842
Записей в блоге: 7
01.12.2012, 12:53 9
C#
1
Matrix.CreateOrthographicOffCenter(k, k, 0.0f, 1.0f);
меняй k для массштабирования
а вообще у меня нет проекта чтобы попробовать. здесь надо перепробовать много комбинаций
1
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
01.12.2012, 15:21  [ТС] 10
za5, то что надо) и так очевидно) как сам не додумался не знаю)) Думал что нужно работать с матрицей вида)
0
444 / 348 / 32
Регистрация: 16.10.2010
Сообщений: 842
Записей в блоге: 7
01.12.2012, 15:29 11
вообще то всегда работают либо с матрицей вида либо с world а тут по-другому сам не знаю почему

наверняка createscale к world или view должны работать

но только для это надо использовать createprthographic наверное но не createprthographiccenter
0
01.12.2012, 15:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2012, 15:29
Помогаю со студенческими работами здесь

Как масштабировать картинку?
Есть pictureBox. Свойству Image присвоена картинка BitMap. На ней мы что-то нарисовали, сделав из...

Как масштабировать canvas?
Ребят, подскажите как можно масштабировать canvas по увеличению или уменьшению окна.

Как масштабировать карту
У меня возник следующий вопрос. Я открыл shapeFile озер страны через C#,те по точкам из него...

Как удалить нарисованный круг
public partial class Form1 : Form { Bitmap Handler = Resource1.BlueBall,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru