在ASP.NET中实现用户控制的样式更改
好的,所以我们有客户,这些客户可以自定义其面向Web的页面。我们为他们提供的一种选择是能够使用那些六角轮之一或者其他任何一种来改变图形的颜色(就像是一个看起来像佛兰芒色的条)。
因此,我已经考虑过了,而且我不知道从哪里开始。我将在本周向我的xhtml家伙发送comps,并且在发送东西之前,至少要在我脑海中完成该实现。
有关System.Drawing的东西听起来不错,但是我以前从未使用过它,这听起来很复杂。有人有主意吗?
更新:图像的颜色将改变。因此,如果我希望图像1为绿色,图像2为蓝色,则进入管理屏幕并输入那些十六进制值(可能会为其提供一个界面),然后当其他人查看其页面时,他们会看到他们所做的更改。有点像自定义Facebook或者MySpace页面(OMFGz soooo Werb 2.0)
谢谢!
解决方案
究竟将发生什么变化?根据所发生的变化,我们可能可以在html背景颜色上覆盖一个透明的png。只需更改背景颜色,徽标颜色就会更改。当然,这限制了我们可以更改的内容,但是我们会惊讶地发现我们可以摆脱多少。
是的,替代方法是在Web服务器上绘制图像。这是hanselman发表的帖子。
之前,我已经在PHP中完成过类似的工作,并且我使用过ImageMagick和GD库。我不确定ASP和Ccan是否可以使用.NET框架将其插入,但这只是一个开始。
System.Drawing是基于GDI +的。仅当我们在Worlda Web中绘制位图时才有用。
编辑(因为我们更改了标题):
如果六角轮上的颜色很少,则可以简单地使用JavaScript从某些预制图形中更改图像源。
如果我们有大量或者可变的颜色供用户选择,那么我将使用AJAX调用来生成图形,该图形使用我们可以在网上或者在书中找到的相关ASP功能生成。
我们需要查看我们正在谈论的框架或者图形。
可以通过CSS和JavaScript在客户端执行,或者可能需要使用PHP或者ASP等在服务器端生成图形。
解决方案将取决于图形的复杂程度。如果我们有简单的图形(可以使用MS Paint制作),则可以使用System.Drawing命名空间相当可靠地重新创建图像。
如果我们有复杂的图形,例如用photoshop或者Paint.NET制作的具有多层的图形,则最好允许客户端选择几种颜色(4-8-16)并预先制作与图形匹配的图形,这样可能会更好。选择。
我们可以在http://www.bobpowell.net/上找到有关System.Drawing的一些巧妙思想和方法。
我们也许搜索此示例。但是我不确定。
获取此类内容的标准方法是根据用户选择链接到不同的CSS文件(或者类)(我们可能希望存储用户选择并在同一用户登录时进行检索,但这不在本文范围内)。
如果我们使用的是ASP.NET,则可以使用主题作为优化的集中式方法来控制Web应用程序的表示。我们可以在主题中包含样式表,并轻松以编程方式在主题之间进行切换,自动应用关联的样式表。
若要查看如何定义ASP.NET页面主题,请查看以下链接:
http://msdn.microsoft.com/en-us/library/ms247256.aspx
要查看如何以编程方式在主题之间切换,请点击以下其他链接:
http://msdn.microsoft.com/zh-CN/library/0yy5hxdk(VS.80).aspx
我有点直觉,我们将获得一个黑白底图,用作基础图像。客户然后可以选择任何其他颜色组合。这可能不完全是情况,但这应该使我们开始。 (下面的代码是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
然后我们可以对图像进行任何处理...