【问题标题】:Change HSL values of a bitmap using c#使用 c# 更改位图的 HSL 值
【发布时间】:2011-07-14 13:42:35
【问题描述】:

我想知道如何使用 C# 更改位图的 HSL 值。 必须可以加载位图并在每个像素上更改其 HSL 值。

【问题讨论】:

    标签: c# bitmap hsl


    【解决方案1】:

    您必须查看每个像素的 RGB,将其转换为 HSL,修改 HSL 值,转换回 RGB 并将新的像素数据写入位图。不幸的是,System.Drawing 没有内置的 HSL 到 RGB 功能(尽管 RGB 到 HSL 确实存在)。

    查看以下代码项目文章,了解可以进行两种 RGB/HSL 转换的类:http://www.codeproject.com/KB/recipes/colorspace1.aspx

    【讨论】:

      【解决方案2】:

      您可以在您的位图上使用LockBits,这将为您提供一个BitmapData 对象。

      使用 BitmapData,您可以:

      1. 使用“不安全”代码块迭代每个像素并修改值。
      2. 使用Marshal.Copy 将像素复制到数组中,修改数组中的值,然后将其复制回位图源。

      这个话题的详细解释可以找到here

      这是一篇关于 RGB -> HSL 的文章,您可能会觉得有用。

      【讨论】:

        猜你喜欢
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多