Menggunakan C # saya mencoba mengembangkan dua berikut. Cara saya melakukannya mungkin memiliki beberapa masalah dan butuh saran baik dari Anda. Selain itu, saya tidak tahu apakah ada metode yang ada untuk melakukan hal yang sama.
private static String HexConverter(System.Drawing.Color c)
{
String rtn = String.Empty;
try
{
rtn = "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
}
catch (Exception ex)
{
//doing nothing
}
return rtn;
}
private static String RGBConverter(System.Drawing.Color c)
{
String rtn = String.Empty;
try
{
rtn = "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
}
catch (Exception ex)
{
//doing nothing
}
return rtn;
}
Terima kasih.
c#
asp.net
rgb
system.drawing.color
Nazmul
sumber
sumber
Jawaban:
Saya gagal melihat masalahnya di sini. Kode itu terlihat bagus untuk saya.
Satu-satunya hal yang dapat saya pikirkan adalah bahwa mencoba / menangkap blok yang berlebihan - Warna adalah struct dan R, G, dan B adalah byte, sehingga c tidak dapat null dan
c.R.ToString()
,c.G.ToString()
, danc.B.ToString()
tidak bisa benar-benar gagal (yang Satu - satunya cara saya dapat melihat mereka gagal adalah denganNullReferenceException
, dan tidak satupun dari mereka yang benar-benar dapat null).Anda bisa membersihkan semuanya menggunakan yang berikut:
sumber
Anda dapat membuatnya tetap sederhana dan menggunakan penerjemah warna asli:
Kemudian pisahkan tiga pasangan warna menjadi bentuk integer:
sumber
Jika Anda dapat menggunakan C # 6 atau lebih tinggi, Anda bisa mendapat manfaat dari Interpolated Strings dan menulis ulang solusi @Ari Roth seperti ini:
C # 6:
Juga:
this
untuk menggunakannya sebagai metode ekstensi.string
bukan nama kelas.sumber
misalnya
Ini dapat menghindari trik FamousColor.
sumber
Saya menemukan metode ekstensi yang berfungsi dengan baik
Ref: https://social.msdn.microsoft.com/Forums/en-US/4c77ba6c-6659-4a46-920a-7261dd4a15d0/how-to-convert-rgba-value-into-its-equ-ent-hequ-code-code? forum = winappswithcsharp
sumber
X2
alih-alihX
, kalau tidak, Anda mungkin mendapatkan1
alih-alih01
itu akan menjadi masalah.X2
itu Anda tidak perlu semuacolor.B.ToString("X").Length == 1 ?
terner.Untuk kode heksadesimal coba ini
& 0x00FFFFFF
Untuk RGB satu
Red
,Green
,Blue
nilai-nilaiPenerapan
sumber