Реализация контролируемых пользователем изменений стиля в ASP.NET - PullRequest
1 голос
/ 23 сентября 2008

Хорошо, у нас есть клиенты, и эти клиенты могут настроить свою веб-страницу. Один из вариантов, который мы им даем, - это возможность менять цвет графики (это похоже на фреймворченую полоску), используя одно из этих шестигранных колес или что-то еще.

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

Что-то в System.Drawing звучит примерно так, но я никогда не работал с этим раньше, и звучит как-то сложно. У кого-нибудь есть идея?

ОБНОВЛЕНИЕ: Цвет изображения будет меняться. Поэтому, если я хочу, чтобы изображение 1 было зеленым, а изображение 2 - синим, я захожу на экран администратора и вводю эти шестнадцатеричные значения (возможно, предоставлю им интерфейс для этого), а затем, когда кто-то еще смотрит на их страницу, они увидят изменения, которые они сделали. Вроде как настройка страницы на Facebook или MySpace (OMFGz soooo Werb 2.0)

Ответы [ 8 ]

1 голос
/ 23 сентября 2008

Мне кажется, что у вас будет черно-белое растровое изображение, которое вы используете в качестве базового изображения. Затем клиент может выбрать любую другую цветовую комбинацию. Это может быть не совсем ваша ситуация, но это должно нас начать. (Код ниже VB - это то, что я знаю, но преобразование в C # должно быть тривиально для вас.)

Imports System.Drawing

Private Function createImage(ByVal srcPath As String, ByVal fg As Color, ByVal bg As Color) As Bitmap
    Dim img As New Bitmap(srcPath)
    For x As Int16 = 0 To img.Width
        For y As Int16 = 0 To img.Height
            If img.GetPixel(x, y) = Color.Black Then
                img.SetPixel(x, y, fg)
            Else
                img.SetPixel(x, y, bg)
            End If
        Next
    Next
    Return img
End Function

А потом вы можете делать с изображением все, что угодно ...

1 голос
/ 23 сентября 2008

Возможно, вы ищете в этом примере . Но я не уверен.

1 голос
/ 23 сентября 2008

Стандартный способ получения чего-то подобного - это привязка к разным CSS-файлам (или классам) в зависимости от выбора пользователя (вы, вероятно, хотите сохранить выбор пользователя и извлекать его всякий раз, когда один и тот же пользователь входит в систему, но здесь это выходит за рамки) .

Если вы используете ASP.NET, вы можете использовать Темы как оптимизированный и централизованный способ управления презентацией для вашего веб-приложения. Вы можете иметь таблицы стилей в своих темах и легко программно переключаться между темами, автоматически применяя связанные таблицы стилей.

Чтобы узнать, как определить темы страницы ASP.NET, взгляните на эту ссылку:

http://msdn.microsoft.com/en-us/library/ms247256.aspx

Чтобы узнать, как программно переключаться между темами, перейдите по этой другой ссылке:

http://msdn.microsoft.com/en-us/library/0yy5hxdk(VS.80).aspx

1 голос
/ 23 сентября 2008

РЕДАКТИРОВАТЬ (так как вы изменили название):

Если у вас есть небольшое количество цветов на шестигранном колесе, вы можете просто использовать JavaScript, чтобы изменить источник изображения с некоторой готовой графики.

Если у вас есть большой или изменяемый набор цветов для выбора пользователем, я бы использовал вызов AJAX для генерации графики с использованием соответствующих функций ASP, которые вы найдете в Интернете или в книге.


Нам нужно увидеть рамку или рисунок, о котором вы говорите.

Может быть выполнимым на стороне клиента с CSS и JavaScript , или может потребоваться генерация графики на стороне сервера с использованием PHP или ASP и т. Д.

1 голос
/ 23 сентября 2008

Что именно будет меняться? В зависимости от того, что меняется, вы можете наложить прозрачный png поверх цвета фона html. Просто измените цвет фона, и цвет логотипа изменится. Конечно, это ограничивает то, что вы можете изменить, но вы будете удивлены, сколько вы можете сойти с рук.

И да, альтернатива - нарисовать изображение на веб-сервере. Вот пост от hanselman .

0 голосов
/ 23 сентября 2008

Ваше решение будет зависеть от того, насколько сложна графика. Если у вас простая графика (вы можете сделать это с помощью MS Paint), то вы можете использовать пространство имен System.Drawing, чтобы воссоздать изображение достаточно надежно.

Если у вас сложная графика, например, сделанная в Photoshop или Paint.NET с несколькими слоями, вам может быть лучше, если вы предоставите клиенту выбор только из нескольких цветов (4-8-16) и предварительно сделаете графика в соответствии с выбором.

Вы можете проверить http://www.bobpowell.net/ на предмет некоторых изящных идей и того, как это сделать на System.Drawing.

0 голосов
/ 23 сентября 2008

System.Drawing основан на GDI +. Полезно, только если вы рисуете растровые изображения в мире.

0 голосов
/ 23 сентября 2008

Я уже делал подобные вещи в PHP и использовал библиотеки ImageMagick и GD. Я не уверен, что ASP и C # могут подключиться к этому с помощью .NET Framework, но это только начало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...