沿着圆形 GraphicsPath 的 GDIPlus 渐变
我的图形路径中有一个“甜甜圈”。
我想沿着该路径绘制渐变,并控制颜色何时以圆上给定的开始和结束角度开始和结束。
像这样:
http://www.andresilvadesign .com/wp-content/uploads/2011/01/Gauge-icon-design.jpg
LinearGradient 只能走一个角度,并且不能正确遵循路径。
PathGradientBrush 似乎只是..一个圆形渐变? 我似乎找不到在 C# 中正确执行此操作的方法。
任何帮助将不胜感激!
I have a "donut" in a graphics path.
I would like to draw a gradient along that path and control when a color starts and ends by a given start and end angle on the circle.
Like this:
http://www.andresilvadesign.com/wp-content/uploads/2011/01/Gauge-icon-design.jpg
A LinearGradient can only go one angle, and does not follow the path properly.
The PathGradientBrush seems to be just.. a circular gradient?
I cant seem to find a way to do this properly in C#.
Any help would be much appreciated!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 PathGradientBrush 绘制一个完整的圆圈,然后对其进行遮罩,例如使用图像中的仪表面,或者使用背景颜色中的圆圈(和/或饼形楔形)?
Could you draw a full circle using the PathGradientBrush, then mask it, say with a gauge face like in the image, or with a circle (and/or pie wedge) in the background color?
我知道这已经很老了,作者可能不再关心了,但我在网上搜索了这个问题的答案,但找不到任何答案。
KeithS 评论中的链接 bobpowell.net/pgb。 htm 对我不起作用,因为我找不到一种方法来获取用于绘制曲线的实际点数。 (参见“让它们被包围”段落。)
为了尝试模拟色轮,我编写了这段代码:(我不是专业人士,非常欢迎任何增强代码的建议 - 特别是我的边缘有点模糊) 。
这个想法是产生一个看起来像甜甜圈的多边形,为每个“顶点”应用从颜色图插值的颜色,并将白色中心颜色放置在“虚拟”甜甜圈的中心。 (我使用双缓冲来避免闪烁。)
I know this is quite old, and the author probably doesn't much care anymore, but I have searched the web for an answer to this question and I could not find any.
KeithS' link in the comment bobpowell.net/pgb.htm was not working for me because I could not find a way to get the real number of points used to draw the curve. (See the paragraph "Got them surrounded.")
To attempt to emulate the color wheel I thus wrote this code: (I am not a professional, any suggestion to enhance the code is very welcome - in particular my edges are a little fuzzy).
The idea was to produce a polygon that looks like a donut, apply a color for each "vertex" interpolated from a color map and a white centercolor placed in the center of the "virtual" donut. (I use doublebuffering to avoid flickering.)