Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2011, 14:12   #1
Berckyt
 
Регистрация: 15.03.2009
Сообщений: 5
По умолчанию Алгоритм закраски карты

Здравствйте, такой вопрос.
Есть контурная карта рельефа, у каждой точки на карте есть определенная характеристика (крутизна склона, например) И надо в зависимости от этого значения раскрасить все точки в битмапе плавным переходом от коричневого( максимальное значение) к желтому (среднее значение) и зеленому (минимальное значение). Как на обычных картах, вообщем.
Есть идеи, как это можно реализовать?
Berckyt вне форума Ответить с цитированием
Старый 01.06.2011, 15:00   #2
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

никто тебя не понял, что как куда откуда. надо больше информации. Да и проблема банальной какой то кажется
Guy вне форума Ответить с цитированием
Старый 01.06.2011, 15:24   #3
Berckyt
 
Регистрация: 15.03.2009
Сообщений: 5
По умолчанию

Есть двумерный массив с пикселями, у каждого пикселя есть координаты Х,Y, параметр G типа double и цвет
Есть два битмапа, один это бесцветная карта, используемая в качестве фона
Каждую точку второго битмапа надо закрасить, использовав G соответствующего пикселя из массива.
Сейчас результат выглядит так http://i030.radikal.ru/1106/04/1eeaa4d738ff.jpg

Но цвет во втором битмапе должен плавно переходить из коричневого в зеленый, а желтый должен быть промежуточным цветом, но сделать 3 цвета у меня не получается

Сейчас цвет пикселя находится так:
Код:
   
            if (G > 255)
                byteGreen = 0;
            else if (G < 0)
                byteGreen = 255;
            else
                byteGreen = (byte)(255 - G);
            pixel.Color = Color.FromArgb(200, 220, byteGreen, 0);

Последний раз редактировалось Berckyt; 01.06.2011 в 15:36.
Berckyt вне форума Ответить с цитированием
Старый 02.06.2011, 19:42   #4
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Ну я сильно не вникал, но есть идейка:
Сделайте одномерный массив скажем от 0 – 10, где 0 это скажем белый, а 10 это черный, соответственно 5 это серый...
Введем понятие - крутизна склона, это шаг цикла.
Теперь сама суть, у вас есть высота 90м это скажем 9(по цвету) и она должна перейти в 20м (2 по цвету), такой средний уклон... (шаг 2) В результате получаем цикл из значений 9 7 5 3 2.
По поводу растравления точек от центра... ну это математика... скажем если гора круглая, то от центра у нее будет два 5 радиусов с интервалом в 2 пикселя (ну или как хотите...).
Если более сложный рисунок, то это вам решать как их создавать...(математика или редактор + апроксимация).
dampirik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простейший алгоритм заполнения карты! [BeNdeR] Gamedev - cоздание игр: Unity, OpenGL, DirectX 17 05.05.2011 11:32
Алгоритм TMDS (Алгоритм передачи данных интерфейса DVI) Pro4RE Помощь студентам 2 24.04.2011 21:55
Интеллект-карты CodeExpert Свободное общение 3 22.08.2010 18:25
Карты изображений Syltan HTML и CSS 1 06.04.2010 01:48