使用c#更改位图的HSL值

时间:2011-07-14 13:42:35

标签: c# bitmap hsl

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

使用BitmapData,您可以:

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

    以下是一篇关于RGB -> HSL的文章,您可能会发现它很有用。