我什至不知道如何描述我想要什么,但就是这样。假设我有 3 个文本框,我在第一个文本框中输入一些颜色十六进制代码,我想在其顶部应用黑色图层,并将不透明度设置为 50%,并在第二个文本框中获取结果颜色。同样的事情,但第三个是白色的。
让我解释一下:考虑下面这张图:
在 Photoshop 中,我的基础图层颜色有点天蓝色。我在它上面创建了两层,一层是黑色,一层是白色,但两者的不透明度都是 50%。现在,我可以使用颜色选择器 (I) 来简单地选择两种想要的颜色。
我不得不如此频繁地执行此操作,所以我想知道是否可以以编程方式生成它。
我知道,理想情况下我应该尝试一些东西,然后给出不起作用的代码..但这已经让我很困惑,我什至不知道从哪里开始。我见过的最接近的是Kuler http://kuler.adobe.com/所以我认为至少在闪存中是可能的,但话又说回来,我不知道从哪里开始。
你们能指出我正确的方向吗?理想情况下,如果它可以在 jQuery 中实现,那就更好了,但我环顾四周,找不到类似的东西。我并不是在寻求可行的解决方案,只是朝着正确的方向轻推一下。
如果您有任何疑问,请询问。
Technology is not important to me, solution is - I am most comfortable with c# (at least I like to think I am) but I am a beginner in php, flash. Jquery, I am good at it with most stuff (well, who isn't?) - Whatever works is good to me. Php and Flash, I learnt it as a hobby just to familiarize myself.
非常感谢。
所以我可以得到接近的结果,但不完全是你的结果,我认为这是 .NET 使用范围内的数字的副作用1..255
创建颜色时用于 alpha。
但尽管如此,我认为这几乎满足了你的要求:
public class ColorUtility
{
private Color color;
public ColorUtility(Color original)
{
this.color = original;
}
public Color GetTransformedColor(Color overlay)
{
using(var bitmap = new Bitmap(1,1))
{
var g = Graphics.FromImage(bitmap);
using(Brush baseBrush = new SolidBrush(this.color))
{
g.FillRectangle(baseBrush,0,0,1,1);
}
using(Brush overlayBrush = new SolidBrush(Color.FromArgb(127,overlay)))
{
g.FillRectangle(overlayBrush,0,0,1,1);
}
return bitmap.GetPixel(0, 0);
}
}
}
usage:
var startColor = ColorTranslator.FromHtml("#359eff");
var util = new ColorUtility(startColor);
var blackOverlay = util.GetTransformedColor(Color.Black); // yields #9aceff
var whiteOverlay = util.GetTransformedColor(Color.White); // yields #1b4f80
接近您想要的结果,但不完全一样。
EDIT:如果将 alpha 值更改为128
在你得到的效用中
黑色:#9acfff
白色:#1a4f7f
这可能更接近您想要的,但仍然不准确。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)