Bagaimana saya bisa mendapatkan warna dari kode warna heksadesimal (misalnya #FFDFD991
)?
Saya membaca file dan mendapatkan kode warna heksadesimal. Saya perlu membuat System.Windows.Media.Color
contoh yang sesuai untuk kode warna heksadesimal. Apakah ada metode inbuilt dalam kerangka kerja untuk melakukan ini?
#FF0000
adalah kode warna HTML (atau heksadesimal), bukan kode hash. Silakan pelajari perbedaannya.Jawaban:
Saya berasumsi itu adalah kode ARGB ... Apakah Anda mengacu pada
System.Drawing.Color
atauSystem.Windows.Media.Color
? Yang terakhir digunakan dalam WPF misalnya. Saya belum melihat ada yang menyebutkannya, jadi kalau-kalau Anda mencarinya:sumber
Color.FromArgb
metode ini dalam kasus ini. Jika Anda menggunakan floating point alpha, Anda harus mengalikannya dengan 255.Dengan asumsi Anda maksud kode HTML jenis HTML (disebut kode Hex, seperti # FFCC66), gunakan kelas ColorTranslator :
Namun, jika Anda menggunakan kode hex ARGB, Anda bisa menggunakan kelas ColorConverter dari namespace System.Windows.Media:
sumber
Jika Anda tidak ingin menggunakan ColorTranslator, Anda dapat melakukannya dengan mudah:
Kode warna hanyalah representasi heksadesimal dari nilai ARGB.
EDIT
Jika Anda perlu menggunakan 4 nilai alih-alih bilangan bulat tunggal, Anda dapat menggunakan ini (menggabungkan beberapa komentar):
Catatan 1 : NumberStyles ada di System.Globalisasi.
Catatan 2 : berikan pemeriksaan kesalahan Anda sendiri (kode warna harus berupa nilai heksadesimal 6 atau 8 karakter)
sumber
colorcode = colorcode.Replace("#", "")
cukup gunakanint a = byte.parse(colorcode.Substring(0,2), NumberStyles.HexNumber);
dan seterusnya untuk r, g, dan b. Jangan lupa ganti parameter Substring pertama - indeks - dengan 2 untuk r, 4 untuk g dan 6 untuk b.FromArgb
mengambil 1 parameter dalamSystem.Drawing.Color
dan 4 parameter dalamSystem.Windows.Media.Color
Ada juga metode ekstensi kecil yang rapi ini:
Digunakan:
sumber
Color
benar. Saya menggunakan kode dari @too dan memperbaikinya.& 0xFF
pada nilai downshifted akhir setiap kali, alih-alih membutuhkan semua nilai yang berbeda&
dengannya.Tiga varian di bawah ini memberikan warna yang persis sama. Yang terakhir memiliki manfaat yang disorot dalam Visual Studio 2010 IDE (mungkin itu ReSharper yang melakukannya) dengan warna yang tepat.
sumber
System.Windows.Media.Color
.sumber
Saya perlu mengubah kode warna HEX ke System.Drawing.Color, khususnya warna Alice Blue sebagai latar belakang pada formulir WPF dan merasa butuh waktu lebih lama dari yang diharapkan untuk menemukan jawabannya:
-
sumber
Anda dapat menggunakan kode berikut:
sumber
Jika Anda ingin melakukannya dengan Aplikasi Windows Store, ikuti dengan @Hans Kesting dan @Jink jawab:
sumber
Posting ini telah menjadi kebohongan bagi siapa pun yang mencoba mengkonversi dari kode warna hex ke warna sistem. Oleh karena itu, saya pikir saya akan menambahkan solusi komprehensif yang berhubungan dengan nilai hex 6 digit (RGB) dan 8 digit (ARGB).
Secara default, menurut Microsoft, ketika mengkonversi dari nilai RGB ke ARGB
Ini berarti dengan menambahkan FF ke kode warna hex 6 digit (RGB) itu menjadi kode warna hex ARGB 8 digit. Oleh karena itu, metode sederhana dapat dibuat yang menangani ARGB dan RGB hex dan mengubahnya menjadi struct Warna yang sesuai.
Ini terinspirasi oleh jawaban Hans Kesting.
sumber
Anda dapat melihat Silverlight / WPF mengeset elips dengan warna heksadesimal untuk menggunakan nilai hex:
sumber
WPF:
sumber
Color [Indigo]
Menggunakan
sumber
int
?Jika maksud Anda HashCode seperti dalam
.GetHashCode()
, saya khawatir Anda tidak bisa kembali. Fungsi hash bukan dua arah, Anda bisa maju saja, tidak mundur.Ikuti saran Oded jika Anda perlu mendapatkan warna berdasarkan nilai heksadesimal dari warna tersebut.
sumber
Saya menggunakan ColorDialog dalam proyek saya. ColorDialog kadang-kadang mengembalikan "Merah", "Fhushia" dan kadang-kadang mengembalikan "fff000". Saya memecahkan masalah ini seperti ini mungkin membantu seseorang.
InputColor adalah nilai balik dari ColorDialog.
Terima kasih semuanya untuk menjawab pertanyaan ini. Ini sangat membantu saya.
sumber