c# – 在渐变上获取特定位置的颜色
发布时间:2020-12-15 06:18:03 所属栏目:百科 来源:网络整理
导读:我有GradientStopCollection: GradientStopCollection grsc = new GradientStopCollection(3);grsc.Add(new GradientStop(Colors.Red,0));grsc.Add(new GradientStop(Colors.Yellow,.5));grsc.Add(new GradientStop(Colors.Green,1)); 我可以在特定位置获得
我有GradientStopCollection:
GradientStopCollection grsc = new GradientStopCollection(3); grsc.Add(new GradientStop(Colors.Red,0)); grsc.Add(new GradientStop(Colors.Yellow,.5)); grsc.Add(new GradientStop(Colors.Green,1)); 我可以在特定位置获得颜色吗? 有第三方课可以这么做吗? 解决方法
要获取特定点的颜色是必要的,以了解有问题的梯度,这不是GradientStopCollection类的角色.这个类的概念不是理解一个渐变,而应该是对渐变的一个简单的支持集合.
重要的是,您了解每个课程的概念. 要获得颜色,您需要使用渐变绘制代表渐变的类来实例化,最后从绘画中获取颜色. 但我会给你一个更快的解决方案.您可以使用渐变算法来生成单个点.这是一个使用线性渐变算法如何做到这一点的实现: public static class GradientStopCollectionExtensions { public static Color GetRelativeColor(this GradientStopCollection gsc,double offset) { GradientStop before = gsc.Where(w => w.Offset == gsc.Min(m => m.Offset)).First(); GradientStop after = gsc.Where(w => w.Offset == gsc.Max(m => m.Offset)).First(); foreach (var gs in gsc) { if (gs.Offset < offset && gs.Offset > before.Offset) { before = gs; } if (gs.Offset > offset && gs.Offset < after.Offset) { after = gs; } } var color = new Color(); color.ScA = (float)((offset - before.Offset) * (after.Color.ScA - before.Color.ScA) / (after.Offset - before.Offset) + before.Color.ScA); color.ScR = (float)((offset - before.Offset) * (after.Color.ScR - before.Color.ScR) / (after.Offset - before.Offset) + before.Color.ScR); color.ScG = (float)((offset - before.Offset) * (after.Color.ScG - before.Color.ScG) / (after.Offset - before.Offset) + before.Color.ScG); color.ScB = (float)((offset - before.Offset) * (after.Color.ScB - before.Color.ScB) / (after.Offset - before.Offset) + before.Color.ScB); return color; } } 在当前上下文中添加此类(命名空间上下文) 要在任何地方获取颜色,请插入以下内容: var color = grsc.GetRelativeColor(.75); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- XML的dtd与Schema约束
- 【cocos2d-x 学习与应用总结】最近一段时间使用cocos2d-x l
- React Native Picker (多列数据)
- 如何在C#/ .NET中从另一个中减去一个位图?
- ruby – 在事件机器中具有薄和彩虹的异步sinatra.为什么瘦更
- ruby-on-rails – 在rails中的view.stub部分rspec给出’und
- 淘淘商城系列——使用JsonView来格式化json字符串
- postgresql(1)
- 运行iPhone模拟器时,您可以将Xcode控制台的日志输出重定向到
- form.getForm().submit的用法及Ext.Ajax.request的小小区别