Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

программирование быстрого рисования 2D карты значений функции

26K
29 ноября 2007 года
angel2c
32 / / 29.11.2007
всем доброго времени суток!
я новичок на этом сайте, но несмотря на страшные угрозы в правилах форума (которые я выполнил :) ), решился на создание новой темы.
работаю в ВС++В 2-й год, пишу программу площадного анализа геофизических данных и вот впервые столкнулся с проблемой, которую сам, видимо, не смогу решить, поэтому и прошу вашей помощи.

а собственно проблема в следующем - как нарисовать карту? Но не так, как я это делаю сейчас, а именно: рассчитываю значение в пикселе, подбираю ему цвет в соответствии со шкалой и вывожу на экран - и так для каждого пикселя! Это очень долго! А нужна какая-нибудь функция, на вход которой подаётся матрица значений, а она рисует карту... Есть такая? Либо, возможно, нужно создавать bmp файл и потом его выводить?.. Но как это сделать и увеличит ли это скорость рисования?...

Буду благодарен за любую помощь!
С уважением, angel2c.
8.8K
29 ноября 2007 года
Se AD WMD
165 / / 10.01.2007
Но не так, как я это делаю сейчас, а именно: рассчитываю значение в пикселе, подбираю ему цвет в соответствии со шкалой и вывожу на экран - и так для каждого пикселя!
-Оптимальный вариант
А нужна какая-нибудь функция, на вход которой подаётся матрица значений, а она рисует карту...
-Ну раз очень нужна-сам напиши например так:
void paint(_karta karta)
{
for(int x=0;x<karta.x;x+=1)
for(int y=0;y<karta.y;y+=1)
ЧетоТамКудаРисуеш1->Canvas->Pixels[x][y]=RGB(karta.pixels[x][y].R,karta.pixels[x][y].G,karta.pixels[x][y].B);
}
И объяви структуру карты
struct _pixels{
int R;
int G;
int B;
};
struct _karta{
int x;
int y;
_pixels pixels[x][y];
};
_karta karta;
Если поимпровизировать, добавить область(начальные, конечные координаты области карты) и при необходимости перерисовывать карту не полностью, а только участки то моглобы и снизить, но при таком возростании кода только увеличит время прорисовки карты.

Хотя на мой взгляд если сильно тормозит при рисовании карты проще создать невидимый TBitmap и сначала на нём рисовать карту, а потом его канву переганять в канву видимого рисунка одним махом.
386
30 ноября 2007 года
newcss
297 / / 05.04.2005
Тебя смущает вопрос скорости прорисовки?
Тогда копай в сторону стандартов изображений PNG,BMP,GIF... Генерь саму картинку. Если еще убыстрить, то делай ассемблерные вставки.
8.8K
30 ноября 2007 года
Se AD WMD
165 / / 10.01.2007
Цитата: newcss
Тогда копай в сторону стандартов изображений PNG,BMP,GIF... .


БМП-самый быстрый будет-нетратится время на конверт из БМП в PNG или GIF

26K
30 ноября 2007 года
angel2c
32 / / 29.11.2007
во-первых, спасибо, что откликнулись!!

во-вторых, приведённый код - это то, что я сейчас примерно сделал. в таком случае карта во весь экран рисуется 15-30 секунд в зависимости от сложности расчёта значения в текущем пикселе... а хотелось бы как в крутых программах, а точнее мгновенно)) ну или хотя бы почти:D

про функцию, выводящую карту, я сам имел ввиду скорее что-то типа LoadFromBmp... то есть то, что вы в итоге и советуете. но подскажите, как создать bmp, зная цвета во всех пикселях? и что такое "ассемблерные вставки", которые еще круче?:confused:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог