生成随机颜色的问题 – asp.net和c#
发布时间:2020-12-16 03:41:09 所属栏目:asp.Net 来源:网络整理
导读:我需要生成在我的asp.net应用程序中生成Hex值的随机颜色来绘制图形. Random random = new Random(); color = String.Format("#{0:X6}",random.Next(0x1000000)); 上面的代码生成随机颜色代码.但是我的问题是它有时会产生与之前颜色几乎相似的颜色.因为我将它
我需要生成在我的asp.net应用程序中生成Hex值的随机颜色来绘制图形.
Random random = new Random(); color = String.Format("#{0:X6}",random.Next(0x1000000)); 上面的代码生成随机颜色代码.但是我的问题是它有时会产生与之前颜色几乎相似的颜色.因为我将它用于图形目的,我需要生成完全不同的颜色.有任何想法吗…. 解决方法
我可能误解了这个问题……
如果问题是为了避免随着时间的推移产生相似的颜色序列,请参阅KMan的回答,我认为这是第一个通过从同一个生成器生成所有随机值(而不是每次生成一个新生成器)的建议,可以避免使用与先前使用的发电机相同的种子生产发电机的风险. 如果担心要避免连续绘制两个“相似”颜色,则应采取以下响应.连续避免两种相似的颜色意味着 >使用一些数学逻辑(但是存在使用的函数不能覆盖所有可能颜色的光谱的风险,因为一个像样的随机数生成器会) 第二种方法是以下代码段中说明的内容. const int minTotalDiff = 200; // parameter used in new color acceptance criteria const int okSingleDiff = 100; // id. int prevR,prevG,prevB; // R,G and B components of the previously issued color. Random RandGen = null; public string GetNewColor() { int newR,newG,newB; if (RandGen == null) { RandGen = new Random(); prevR = prevG = prevB = 0; } bool found = false; while (!found) { newR = RandGen.Next(255); newG = RandGen.Next(255); newB = RandGen.Next(255); int diffR = Math.Abs(prevR - newR); int diffG = Math.Abs(prevG - newG); int diffB = Math.Abs(prevB - newB); // we only take the new color if... // Collectively the color components are changed by a certain // minimum // or if at least one individual colors is changed by "a lot". if (diffR + diffG + diffB >= minTotalDiff || diffR >= okSingleDiff || diffR >= okSingleDiff || diffR >= okSingleDiff ) found = true; } prevR = newR; prevG = newG; prevB = newB; return String.Format("#{0:X2}{0:X2}{0:X2}",prevR,prevB); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 为什么在我的ASP MVC4应用程序中重定向资源
- arrays – ASP经典中的数组合并
- 收藏的asp.net文件上传类源码
- asp.net-core – 如何使.NET Core类库从.NET 4.6项目引用?
- C#_.NetCore_WebAPI项目_EXCEL数据导出(ExcelHelper_第二版
- asp.net-mvc – Mono上的ASP.NET MVC
- asp.net-mvc-4 – Captcha MVC 4刷新按钮未显示
- 如何在ASP.NET ListBox中设置多个选择?
- asp.net – jquery getJson没有将任何值传递给控制器
- 在asp.net的内容页面中查找母版页内的UnorderedList控件
推荐文章
站长推荐
- asp.net-mvc-4 – 错误:无法将lambda表达式转换
- asp.net – Glimpse手动分析a MiniProfiler?
- asp.net-mvc-4 – Kendo UI组合框复位值
- asp.net – Razor查看到Word文档或PDF
- asp.net – 根据DropDownList选择验证TextBox
- asp.net-mvc – 设置Kendo UI Grid Popup(MVC)的
- asp.net – Form .NET中的输入元素名称
- asp.net-mvc – ViewBag分配
- asp.net-mvc – 为什么Microsoft堆栈说成本高昂?
- asp-classic – 如何判断ASP中的变量是否已声明
热点阅读