gpt4 book ai didi

C# GDI+ - 在光泽方法上删除椭圆的下半部分

转载 作者:行者123 更新时间:2023-11-30 21:24:00 24 4
gpt4 key购买 nike

我有一个光泽方法,我正在尝试获得类似倒半月的效果。在下面的代码中,我想删除这个椭圆下半部分的正上方,然后绘制它。有谁知道我应该如何开始这样做?

附言。光泽也太白了。我试过弄乱 alpha 无济于事,有没有人知道任何使光泽更微妙的技巧?谢谢

  /// <summary>
/// Applies gloss to clock
/// </summary>
/// <param name="e"></param>
private void DrawGloss(PaintEventArgs e)
{
Graphics g = e.Graphics;

float x = ((float)_CenterX / 1.1F) / _PI;
float y = ((float)_CenterY / 1.2F) / _PI;
float width = ((this.ClientSize.Width / 2)) + _hourLength;
float height = ((this.ClientSize.Height / 2)) + _hourLength;

RectangleF glossRect = new RectangleF(
x + (float)(width * 0.10),
y + (float)(height * 0.07),
(float)(width * .8),
(float)(height * 0.4));


LinearGradientBrush gradientBrush =
new LinearGradientBrush(glossRect,
Color.FromArgb((int)50, Color.Transparent),
glossColor,
LinearGradientMode.BackwardDiagonal);
g.FillEllipse(gradientBrush, glossRect);


}

最佳答案

FillPie 可以准确地给出半个圆。否则,您必须使用 FillClosedCurve 或 FillPath 获得略小于半个圆,或者在中间的、稍小的位图上绘制一个半圆,然后使用 DrawImage 将其复制回主位图。

要获得更微妙的光泽效果,我认为您只需将 LinearGradientBrush 代码更改为:

LinearGradientBrush gradientBrush =                
new LinearGradientBrush(glossRect,
Color.Transparent,
Color.FromArgb((int)50, glossColor),
LinearGradientMode.BackwardDiagonal);

您的原始渐变是从完全透明变为全光泽颜色。

关于C# GDI+ - 在光泽方法上删除椭圆的下半部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1429181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com