使用C#更改位图的HSL值

3

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

2个回答

0

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

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


0

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

使用BitmapData,您可以:

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

有关此主题的详细说明,请单击此处

这里有一篇关于RGB -> HSL的文章,您可能会发现它有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接