首页 > 解决方案 > 如何处理溢出(添加颜色)或下溢(减去颜色)

问题描述

我正在尝试编写一个可以从电影胶片(例如 Super8 或 Normal8)中提取图像的应用程序,以便从提取的图像中生成视频。我正在尝试使用 .NET 5.0 和 C# 在 WPF 中做到这一点。一些图像需要颜色校正(更亮、更暗、更清晰等);

.NET 5.0 提供了一个结构 System.Windows.Media.Color,它提供了Add(Color1,Color2)Subtract(Color1, Color2)方法。如果您在 C# 程序中执行此方法,则可能会出现颜色通道结果,其 argb 值应低于 0 或高于 255。

我预计负结果的值为 0(零),高于 255 的结果为 255。

- - 样本 - - - - - - - - - - - - - - - - - - - - - - - ------------------------------------------

    //
    // the correction color is defined as a static System.Windows.Media.Color
    // e.g.like Color.FromArgb(255, 20, 15, 10);
    //   
    public Color CorrectARGBValues(byte a, byte red, byte green, byte blue)
    {
        System.Windows.Media.Color aOldColor = Color.FromArgb(a, red, green, blue);
        System.Windows.Media.Color aNewColor = Color.Add(aOldColor, aCorrectionColor);
        return aNewColor;
    }

上述函数似乎无法处理此异常 - 例如,通过插入 0 表示负值或插入 255 表示高于 255 的值。任何人都可以推荐一个简单的解决方案来解决这个问题。我在 MS 文档和 Internet 中都找不到适合这个简单问题的任何内容。一种解决方案可能是分别处理 WhriteableBitmap 中的每个颜色像素,但这似乎非常尴尬。问候沃尔夫冈

标签: c#wpf

解决方案


推荐阅读