我有一个问题,我正在尝试根据我指定的值更新元素的背景渐变.
我尝试过这条路线:
elem.style.backgroundImage = '-webkit-gradient(radial, '+x+' '+y+', 0, '+x+' '+y+', 800, from(#ccc), to(#333)), -moz-radial-gradient('+x+'px '+y+'px, circle cover, #ccc 0, #333 100%)';
Run Code Online (Sandbox Code Playgroud)
由于Webkit和Gecko有两种不同的CSS3渐变语法,我需要指定两者.但是,上面的代码不起作用.如果我只有Gecko语法或只是Webkit语法,它可以工作,而不是两者兼而有之.
我认为你可以检查CSS渐变支持,但我的问题是,有没有办法检查需要在没有浏览器嗅探的情况下使用哪种语法?请记住,我需要以这种方式设置渐变,因为渐变的x和y坐标会动态变化.
希望这是有道理的,谢谢.
有一种方法使用一个具有以可抽拉XML 2个梯度<layer-list>或<shape>或它们的一些组合?
OpenGL可以使用从一侧到另一侧的渐变颜色为矩形着色.我在C++中使用以下代码
glBegin(GL_QUADS);
{
glColor3d(simulationSettings->hotColour.redF(), simulationSettings->hotColour.greenF(), simulationSettings->hotColour.blueF());
glVertex2d(keyPosX - keyWidth/2, keyPosY + keyHight/2);
glColor3d(simulationSettings->coldColour.redF(), simulationSettings->coldColour.greenF(), simulationSettings->coldColour.blueF());
glVertex2d(keyPosX - keyWidth/2, keyPosY - keyHight/2);
glColor3d(simulationSettings->coldColour.redF(), simulationSettings->coldColour.greenF(), simulationSettings->coldColour.blueF());
glVertex2d(keyPosX + keyWidth/2, keyPosY - keyHight/2);
glColor3d(simulationSettings->hotColour.redF(), simulationSettings->hotColour.greenF(), simulationSettings->hotColour.blueF());
glVertex2d(keyPosX + keyWidth/2, keyPosY + keyHight/2);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用一些Qt库来进行HSV和RGB之间的转换.从代码中可以看出,我正在绘制一个带有颜色渐变的矩形,从我称之为hotColour到coldColour.
我为什么要这样做?我制作的程序在空间中绘制3D矢量,并用颜色表示它们的长度.用户可以选择热(高值)和冷(低值)颜色,程序将使用HSV缩放自动执行渐变.
为什么HSV缩放?因为HSV沿我正在使用的颜色图是单值的,并且线性地创建渐变是一项非常容易的任务.为了让用户选择颜色,我给他提供了一个QColourDialog颜色图
http://qt-project.org/doc/qt-4.8/qcolordialog.html
在此颜色贴图上,您可以看到左侧和右侧都有红色,因此无法为此RGB颜色贴图设置线性刻度.但是对于HSV,线性刻度非常容易实现,我只需要在0到360之间使用线性刻度来表示Hue值.
通过这个范例,我们可以看到冷色和冷色定义了渐变的方向,例如,如果我选择hue为0表示冷,359表示热,HSV将给出0到359之间的渐变,并且包括渐变中的全部颜色; 而在OpenGL中,它基本上会从红色变为红色,这是没有渐变的!!!!!!
如何强制OpenGL使用HSV渐变而不是RGB?我想到的唯一想法是切割矩形我想要着色并在较小的矩形上做很多渐变,但我认为这不是最有效的方法.
有任何想法吗?
我遇到了奇怪的行为.我正在使用我在控制器中设置的自定义样式按钮:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.signOutButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.signOutButton setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
CAGradientLayer *btnGradient = [CAGradientLayer layer];
btnGradient.frame = self.signOutButton.bounds;
btnGradient.colors = [NSArray arrayWithObjects:
(id)[[UIColor colorWithRed:102.0f / 255.0f green:102.0f / 255.0f blue:102.0f / 255.0f alpha:1.0f] CGColor],
(id)[[UIColor colorWithRed:51.0f / 255.0f green:51.0f / 255.0f blue:51.0f / 255.0f alpha:1.0f] CGColor],
nil];
[self.signOutButton.layer insertSublayer:btnGradient atIndex:0];
}
Run Code Online (Sandbox Code Playgroud)
它在iOS 5中运行正常.但是如果我在iOS 6中使用启用的Autolayout for Storyboard构建这个,那么我的风格中的渐变消失/变得透明(但标题仍然可见).
如果我禁用自动布局 - 渐变回来了.有人可以用autolayout解释这种行为吗?
我尝试在图像上渲染渐变,它需要从全彩色到透明,这是我的代码.我得到黑色图像,如果我把开始更多然后0我得到白色渐变但没有图像.输出图像为338x100像素,但如果图像较窄,则输入图像需要右对齐.
function hex2rgb($hex) {
$rgb[0] = hexdec(substr($hex, 0, 2));
$rgb[1] = hexdec(substr($hex, 2, 2));
$rgb[2] = hexdec(substr($hex, 4, 2));
return $rgb;
}
function int2rgb($color) {
$result[] = ($color >> 16) & 0xFF;
$result[] = ($color >> 8) & 0xFF;
$result[] = $color & 0xFF;
return $result;
}
if (isset($_GET['start']) && isset($_GET['stop']) && isset($_GET['color'])) {
$input = imagecreatefrompng('file.png');
$width = imagesx($input);
$output = imagecreatetruecolor(338, 100);
$color = hex2rgb($_GET['color']);
$fill = imagecolorallocate($output, $color[0], $color[1], $color[2]);
for ($x=0; $x<$_GET['start']; ++$x) {
for ($y=0; …Run Code Online (Sandbox Code Playgroud) 我想创建一个右上角和左下角渐变的背景视图我该如何实现?
我有这个代码
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.bounds;
gradient.colors = [NSArray arrayWithObjects: (id)[[UIColor whiteColor] CGColor],(id)[[UIColor blackColor] CGColor], nil];
gradient.startPoint = CGPointZero;
[self.layer insertSublayer:gradient atIndex:0];
Run Code Online (Sandbox Code Playgroud)
但它没有做我想要的,我不知道如何让它做我想要的.
目前的结果:

期望的结果是:

这是CodePen上的代码.它看起来与我在Chrome中的预期完全一样.Firefox和Safari都看错了.(我是所有3的最新版本.)
我正在研究一种跨多个inline-block元素使用恒定渐变背景的方法.以下是它现在的工作方式:
ol其:before伪元素具有渐变背景(transparent到不透明的颜色)和一个z-index在子元素上方显示它的集合li.li■找的background-color设置为颜色看起来像什么梯度的transparent值设置为.li的color被设置为transparent和具有:before该显示对以前设置为文本伪元素transparent并且它们的z折射率设置为显示上述ol:before(背景梯度).除了Firefox中的相同问题,它还显示两个似乎具有多重混合模式的渐变.一个来自-webkit-linear-gradient一个linear-gradient.但是,解决明显混合模式的问题应该考虑到第三个问题.
我的谷歌搜索让我意识到background-blend-mode,但设置为normal(或任何其他有效值)没有改变任何东西.我认为它只适用于单个元素的多个背景,但我不确定.但是,这可以解释为什么它不能解决我的问题.
我想通过Tensorflow计算Jacobian矩阵。
是)我有的:
def compute_grads(fn, vars, data_num):
grads = []
for n in range(0, data_num):
for v in vars:
grads.append(tf.gradients(tf.slice(fn, [n, 0], [1, 1]), v)[0])
return tf.reshape(tf.stack(grads), shape=[data_num, -1])
Run Code Online (Sandbox Code Playgroud)
fn是损失函数,vars都是可训练的变量,并且data_num是许多数据。
但是,如果我们增加数据数量,则需要花费大量时间来运行该功能compute_grads。有任何想法吗?