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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Масштабирование 
:(
    Опции темы
Lottarend
Дата 8.7.2010, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть pictureBox. Столкнулся с такой проблемой: нужно систему координат переделать. У меня в массиве миллионные координаты - они просто не влезают в картинку. Пробовал сделать все методом школьной пропорции, но не получилось.

 
Код

public void PrePoint(double x, double y)
        {
            //беру данные из массивов, нахожу среднее значение
            for (int i = 0; i < arrx.Count; i++)
            {
                if (i == 0)
                    Result = Convert.ToDouble(arrx[i]);
                else
                    Result = Result + Convert.ToDouble(arrx[i]);                   
            }
            for (int i = 0; i <arry.Count; i++)
            {
                if (i == 0)
                    Result2 = Convert.ToDouble(arry[i]);
                else
                    Result2 = Result2 + Convert.ToDouble(arry[i]);
            }
            Srednee = Result / arrx.Count;
            Srednee2 = Result2 / arry.Count;
            Mashtab = Srednee;
            Mashtab2 = Srednee2;
        //Масштабирую. Не знаю точно, можно ли так делать. Принимая среднее значение за 0, переношу его в центр картинки.
    //DH,DW - высота и ширина картинки
            while (Srednee > DH / 2)
                Srednee = Srednee / 1.1;
            while (Srednee2 > DW / 2)
                Srednee2 = Srednee2 / 1.1;    
            for (int i = 0; i < arrx.Count; i++)
            {
                double d = Convert.ToDouble(arrx[i]);
                //получаю кол-во координат на 1 пиксель
                double prop = Mashtab/ Srednee;
                double prop2 = Mashtab2 / Srednee2;
                double pix = d / prop;
                double f = Convert.ToDouble(arry[i]);
                double pix2 = f / prop2;
                arrx1.Add(pix);
                arry1.Add(pix2);     
             }
            
    }

Потом, все это прорисовывается.

 
Код

private void RePaint_D(object sender, PaintEventArgs e)
        {
            Pen B = new Pen(Color.Black, 1);
            Graphics G = e.Graphics;
            Point pb = new Point();
            Point pe = new Point();
            pb.X = DW / 2;
            pb.Y = 0;
            pe.X = DW / 2;
            pe.Y = DH;
            e.Graphics.DrawLine(B, pb, pe);
            pb.X = 0;
            pb.Y = DH / 2;
            pe.X = DW;
            pe.Y = DH / 2;
            e.Graphics.DrawLine(B, pb, pe);
            e.Graphics.DrawEllipse(B, 0, 0, DW - 2, DH - 2);
            PrePoint(x, y);
            e.Graphics.TranslateTransform (Convert.ToInt32(Srednee), Convert.ToInt32(Srednee2));
            for (int i = 0; i < arrx1.Count & i < arry1.Count; i++)
            {
                e.Graphics.DrawEllipse(B, Convert.ToInt32(arrx1[i]), Convert.ToInt32(arry1[i]), 10, 10);
            }    
            
        }


Проблема в том, что прорисовываемая точка получается вне круга. Будь все на бумажке - я бы методом линейки все на круг перенес. Но тут что делать - не знаю, да и вряд ли я до этого все правильно сделал. Может быть, можно как-то переделать систему координат? Обозначить нулевое и максимальное значение, например. Чтобы оно все автоматом размещалось.
Программированием только недавно начал заниматься, так что во многом не разбираюсь. Буду очень признателен, если кто-нибудь кинет примерчик на эту тему.
Надеюсь, кто-нибудь откликнется и объяснит мне, хотя бы приблизительно.

Вот так вот получилось. Точка в самом углу.
user posted image

Это сообщение отредактировал(а) Lottarend - 8.7.2010, 16:41
PM MAIL   Вверх
Lottarend
Дата 10.7.2010, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Никто с такой проблемой не сталкивался?
PM MAIL   Вверх
KelTron
Дата 10.7.2010, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Объясни подробно что надо нарисовать, что за точка и тд


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
Lottarend
Дата 10.7.2010, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть лог с GPS приемника. По координатам строится точка - они переводятся в географические. Вся сложность в том, что они получаются миллионными. Рисуется эллипс, на нем должна отображаться точка с этими координатами.
В обычные координаты у меня вроде получилось привести (хотя черт его знает, правильно или нет), а теперь нужно, чтобы как-то высчитывалось, попала ли точка в эллипс. Если нет - проецировалась на него.
Ну и, если есть какой-нибудь способ отмасштабировать систему координат таким образом, чтобы в нее миллионы влезали - это будет здорово.

Это сообщение отредактировал(а) Lottarend - 10.7.2010, 09:00
PM MAIL   Вверх
Lottarend
Дата 11.7.2010, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мде. Топаем на следующий форум...

Это сообщение отредактировал(а) Lottarend - 11.7.2010, 13:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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