.netでHSL色を扱うために使用されるツールは何ですか?Asp.netでHSLを使用する方法
答えて
カラー構造体には、GetHue、GetSaturation、GetBrightnessという3つのメソッドがあります。
ボブパウエルは、数年前にinteresting piece on thisと書いています。
「HSL」(および関連する「HSV」)は、7032年のゼロックスのパロアルト研究センター(PARC)に由来する多くのものの1つで、Alvy Ray Smithの礼儀です。
このColorRGBクラスは、HSLを取得して設定する方法と、System.Drawing.Colorとの暗黙的な変換を提供します。それはGeekMonkey.comの優れた例に基づいています。 secretGeekの答えに加えて
using System;
using System.Drawing;
namespace RMA.Drawing
{
public class ColorRGB
{
public byte R;
public byte G;
public byte B;
public byte A;
public ColorRGB()
{
R = 255;
G = 255;
B = 255;
A = 255;
}
public ColorRGB(Color value)
{
this.R = value.R;
this.G = value.G;
this.B = value.B;
this.A = value.A;
}
public static implicit operator Color(ColorRGB rgb)
{
Color c = Color.FromArgb(rgb.A, rgb.R, rgb.G, rgb.B);
return c;
}
public static explicit operator ColorRGB(Color c)
{
return new ColorRGB(c);
}
// Given H,S,L in range of 0-1
// Returns a Color (RGB struct) in range of 0-255
public static ColorRGB FromHSL(double H, double S, double L)
{
return FromHSLA(H, S, L, 1.0);
}
// Given H,S,L,A in range of 0-1
// Returns a Color (RGB struct) in range of 0-255
public static ColorRGB FromHSLA(double H, double S, double L, double A)
{
double v;
double r, g, b;
if (A > 1.0)
A = 1.0;
r = L; // default to gray
g = L;
b = L;
v = (L <= 0.5) ? (L * (1.0 + S)) : (L + S - L * S);
if (v > 0)
{
double m;
double sv;
int sextant;
double fract, vsf, mid1, mid2;
m = L + L - v;
sv = (v - m)/v;
H *= 6.0;
sextant = (int)H;
fract = H - sextant;
vsf = v * sv * fract;
mid1 = m + vsf;
mid2 = v - vsf;
switch (sextant)
{
case 0:
r = v;
g = mid1;
b = m;
break;
case 1:
r = mid2;
g = v;
b = m;
break;
case 2:
r = m;
g = v;
b = mid1;
break;
case 3:
r = m;
g = mid2;
b = v;
break;
case 4:
r = mid1;
g = m;
b = v;
break;
case 5:
r = v;
g = m;
b = mid2;
break;
}
}
ColorRGB rgb = new ColorRGB();
rgb.R = Convert.ToByte(r * 255.0f);
rgb.G = Convert.ToByte(g * 255.0f);
rgb.B = Convert.ToByte(b * 255.0f);
rgb.A = Convert.ToByte(A * 255.0f);
return rgb;
}
// Hue in range from 0.0 to 1.0
public float H
{
get
{
// Use System.Drawing.Color.GetHue, but divide by 360.0F
// because System.Drawing.Color returns hue in degrees (0 - 360)
// rather than a number between 0 and 1.
return ((Color)this).GetHue()/360.0F;
}
}
// Saturation in range 0.0 - 1.0
public float S
{
get
{
return ((Color)this).GetSaturation();
}
}
// Lightness in range 0.0 - 1.0
public float L
{
get
{
return ((Color)this).GetBrightness();
}
}
}
}
FromHSLAはh = 1.0のケースを処理しません。 –
コードを更新しました。 switch文がh = 1.0 –
を処理するようになりました。いいえ、Alphaクランプを修正しました。問題は色相が1.0になり、6の六分値を与え、 'case'ステートメントでは扱われないということです。 –
、HSL値(またはその逆)から色を取得するには、あなたはまた、これらのネイティブ関数の呼び出し(Visual Basicでのサンプルコード)を使用することができます。
Public Declare Sub ColorRGBToHLS Lib "shlwapi.dll" _
(ByVal clrRGB As UInteger, _
ByRef pwHue As Short, _
ByRef pwLuminance As Short, _
ByRef pwSaturation As Short)
Public Declare Function ColorHLSToRGB Lib "shlwapi.dll" _
(ByVal wHue As Short, _
ByVal wLuminance As Short, _
ByVal wSaturation As Short) As UInteger
(カラー引数/結果を受け渡しするときにColorTranslator.ToWin32
とColorTranslator.FromWin32
を使用)
- 1. HSLカラーで色を塗る方法は?
- 2. Quartz.netをASP.NETで使用する方法
- 3. Asp.netでOracleを使用する方法
- 4. Asp.netでRed5を使用する方法
- 5. ASP.NETでセッションオブジェクトを使用する方法(Visual Basicを使用)
- 6. HSLを使用したPHPでの色付け
- 7. C++でRGBをHSLに変換する
- 8. ASP.Netでwebpackを使用する方法Mac用Visual Studioのコアプロジェクト
- 9. ASP.Net MVCでモバイル用のM.domain.comアドレスを使用する方法
- 10. JavaScriptを使用してasp.netイメージリサイザを使用する方法
- 11. ASP.NET MVC:HttpContext.Userの使用方法
- 12. アニメーションのHSLカラーモデル
- 13. ASP.Net MVCでURL経由でWebApi Controllerを使用する方法
- 14. ASP.NET VBでsqldatabaseでタイムスタンプを追加/使用する方法
- 15. ASP.NET(MVCではない)ソリューションでCKSource.FileSystem.Localを使用する方法
- 16. Birtでレポートを作成し、ASP.NETで使用する方法
- 17. asp.net webformsでiFrameでユーザーコントロールを使用する方法
- 18. ASP.NET MVC 4でSPAホットタオルテンプレートでローカルデータベースを使用する方法
- 19. ASP.netでのWPFユーザーコントロールの使用方法
- 20. asp.netでsmtpを使用してメールを送信する方法
- 21. レポートビューアを使用してasp.netでレポートを作成する方法
- 22. jqueryを使用してasp.netでカスタムコントロールを作成する方法
- 23. HSLからRGBへAngularJSを使用したオートカラー
- 24. BeginForm()でhtmlhelperを使用する方法ASP.NET MVC 3のメソッド
- 25. ASP.NETアプリケーションでSSLを使用する方法
- 26. asp.netでイベントソースを使用する方法ボイラープレート
- 27. ASP.NETアプリケーションでSQL Server CEを使用する方法
- 28. asp.net Webアプリケーションでtelerik silverlightコントロールを使用する方法は?
- 29. prettyPhotoプラグインをASP.NET MVC 2で使用する方法
- 30. ASP.NET MVC 3でSystem.Web.UI.WebControls.Buttonを使用する方法
Bob Powellのコードは本当に便利です。私はそれ以来、私自身のものでそれを使用し、System.Windows.Media.Colorクラスの拡張メソッドを提供するように変換しました。 –
http://www.bobpowell.net/RGBHSB.htmへのリンクはデッドリンクです –
Derekに感謝します。私はarchive.orgの記事のコピーへのリンクを付けて更新しました。 –