Вы можете использовать простой ASP / HTML с постбэками для показа изображения на основе различных опций, которые они выбирают из комбинированных списков и других элементов управления.
Обратная отправка все еще создаст небольшую задержку для их браузера, чтобы заново загрузить страницу с новым изображением. Один из вариантов - вы можете использовать AJAX, чтобы просто загрузить новое изображение без перезагрузки всей страницы. Это, вероятно, даст лучший опыт без использования Flash / Silverlight.
Сколько разных комбинаций изображений у вас будет? Вы можете предварительно рассчитать все возможные комбинации программно и сохранить их. Это заняло бы больше места для хранения, но меньше вычислительной мощности и немного более быструю обратную передачу.
Если вы хотите сгенерировать изображение для каждого запроса, вы должны нарисовать каждое изображение на растровом изображении следующим способом:
Bitmap avatarBitmap = new Bitmap(AvatarWidth, AvatarHeight);
using (Graphics g = Graphics.FromImage(avatarBitmap))
{
foreach (Bitmap bitmap in ListOfImagesToDraw)
{
g.DrawImage(bitmap, 0, 0);
}
}
avatarBitmap.Save(fileName, ImageFormat.Png);
Для этого потребуется, чтобы каждый элемент находился внутри растрового изображения одинакового размера, чтобы они могли выстроиться в линию. Например, если вы делаете все свои изображения в Photoshop, вы можете сделать так, чтобы каждый элемент был слоем одного и того же изображения с прозрачным фоном. Затем вы можете выполнить пакетное сохранение, чтобы сохранить каждый слой в отдельном файле.
Если вам нужно определить Z-порядок так, чтобы некоторые изображения рисовались поверх других изображений (например, солнечные очки рисуют поверх головы, а не сзади), просто убедитесь, что изображения находятся в правильном порядке в вашем ListOfImagesToDraw массив. Этот массив будет сгенерирован информацией из обратной передачи.