3

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

4

2 回答 2

0

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

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

于 2011-07-14T13:49:14.197 回答
0

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

使用 BitmapData,您可以:

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

可以在此处找到有关此主题的详细说明。

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

于 2011-07-14T13:54:16.460 回答