จะสร้าง System.Drawing.Color จากสตริง RGB ฐานสิบหกได้อย่างไร


84

ฉันต้องการสร้างค่าSystem.Drawing.Colorจากค่าเช่น#FF00FFหรือFF00FFไม่จำเป็นต้องเขียนโค้ดสำหรับสิ่งนั้น NET มีโปรแกรมแยกวิเคราะห์ในตัวสำหรับสิ่งนั้นหรือไม่

คำตอบ:




18

มันค่อนข้างง่ายเมื่อคุณใช้ตัวแปลง-Class ToInt32ฟังก์ชั่นที่มีเกินมีพารามิเตอร์ที่สองซึ่งหมายถึงฐานสตริงที่อยู่ใน

using System.Drawing

Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));

9

ใช้คลาสColorConverter :

var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
color = converter.ConvertFromString( "#FF00FF" );

นอกจากนี้ยังสามารถแปลงจากสีที่มีชื่อมาตรฐานเช่น ConvertFromString ("Blue")

ดูที่นี่สำหรับการอภิปรายเกี่ยวกับกลไกการแปลงประเภท. NET มาตรฐาน


1

System.Drawing.Color.FromArgb (0xFF00FF)หากสีที่คุณต้องการที่จะใช้เป็นค่าคงที่ในการใช้ C # ซึ่งเร็วกว่าSystem.Drawing.Color.FromNameหรือเล็กน้อยSystem.Drawing.Color.FromHtmlเนื่องจากการแยกวิเคราะห์จากสตริงเป็นจำนวนเต็มทำได้ในเวลาคอมไพล์แทนที่จะเป็นรันไทม์


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.