ด้วยโค้ดด้านล่าง การใส่สีจะให้ #DDDD เสมอ ค่าสีเขียว สีแดง และช่องว่าง จะแก้ไขได้อย่างไร
string colorstring;
int Blue = 13;
int Green = 0;
int Red = 0;
int Space = 14;
colorstring = String.Format("#{0:X}{0:X}{0:X}{0:X}", Blue, Green, Red, Space);
ด้วยโค้ดด้านล่าง การใส่สีจะให้ #DDDD เสมอ ค่าสีเขียว สีแดง และช่องว่าง จะแก้ไขได้อย่างไร
string colorstring;
int Blue = 13;
int Green = 0;
int Red = 0;
int Space = 14;
colorstring = String.Format("#{0:X}{0:X}{0:X}{0:X}", Blue, Green, Red, Space);
หมายเลข 0
ใน {0:X}
หมายถึงตำแหน่งในรายการหรืออาร์กิวเมนต์ ในกรณีนี้ 0
หมายถึงใช้ค่าแรกซึ่งก็คือ Blue
ใช้ {1:X}
สำหรับอาร์กิวเมนต์ที่สอง (Green
) และต่อๆ ไป
colorstring = String.Format("#{0:X}{1:X}{2:X}{3:X}", Blue, Green, Red, Space);
ไวยากรณ์สำหรับพารามิเตอร์รูปแบบอธิบายไว้ในเอกสารประกอบ:
จัดรูปแบบไวยากรณ์รายการ
แต่ละรายการรูปแบบใช้แบบฟอร์มต่อไปนี้และประกอบด้วยส่วนประกอบต่อไปนี้:
{ index[,alignment][:formatString]}
ต้องมีเครื่องหมายปีกกาที่ตรงกัน ({ และ })
ส่วนประกอบดัชนี
ส่วนประกอบดัชนีบังคับ หรือที่เรียกว่าตัวระบุพารามิเตอร์ คือตัวเลขที่เริ่มต้นจาก 0 ที่ระบุรายการที่เกี่ยวข้องในรายการของออบเจ็กต์ นั่นคือ รายการรูปแบบที่มีตัวระบุพารามิเตอร์เป็น 0 จะจัดรูปแบบออบเจ็กต์แรกในรายการ รายการรูปแบบที่มีตัวระบุพารามิเตอร์เป็น 1 จะจัดรูปแบบออบเจ็กต์ที่สองในรายการ และอื่นๆ
รายการที่มีรูปแบบหลายรายการสามารถอ้างถึงองค์ประกอบเดียวกันในรายการออบเจ็กต์โดยการระบุตัวระบุพารามิเตอร์เดียวกัน ตัวอย่างเช่น คุณสามารถจัดรูปแบบค่าตัวเลขเดียวกันในรูปแบบเลขฐานสิบหก วิทยาศาสตร์ และตัวเลขได้โดยการระบุสตริงรูปแบบผสมดังนี้: {0:X} {0:E} {0:N}
แต่ละรายการรูปแบบสามารถอ้างอิงถึงวัตถุใดๆ ในรายการได้ ตัวอย่างเช่น หากมีสามอ็อบเจ็กต์ คุณสามารถจัดรูปแบบอ็อบเจ็กต์ที่สอง แรก และสามได้โดยการระบุสตริงรูปแบบผสมดังนี้: {1} {0} {2} วัตถุที่ไม่ได้อ้างอิงโดยรายการรูปแบบจะถูกละเว้น ข้อยกเว้นรันไทม์จะส่งผลหากตัวระบุพารามิเตอร์กำหนดรายการนอกขอบเขตของรายการออบเจ็กต์
องค์ประกอบการจัดตำแหน่ง
องค์ประกอบการจัดตำแหน่งที่เป็นตัวเลือกคือจำนวนเต็มที่มีเครื่องหมายซึ่งระบุความกว้างของฟิลด์ที่จัดรูปแบบที่ต้องการ หากค่าของการจัดตำแหน่งน้อยกว่าความยาวของสตริงที่จัดรูปแบบ การจัดตำแหน่งจะถูกละเว้นและความยาวของสตริงที่จัดรูปแบบจะถูกใช้เป็นความกว้างของฟิลด์ ข้อมูลที่จัดรูปแบบในเขตข้อมูลจะถูกจัดชิดขวาหากการจัดตำแหน่งเป็นบวก และจัดชิดซ้ายหากการจัดตำแหน่งเป็นลบ หากจำเป็นต้องรองพื้น ให้ใช้ช่องว่าง จำเป็นต้องมีเครื่องหมายจุลภาคหากระบุการจัดตำแหน่ง
จัดรูปแบบองค์ประกอบสตริง
คอมโพเนนต์ formatString ที่เป็นตัวเลือกคือสตริงรูปแบบที่เหมาะสมสำหรับประเภทของออบเจ็กต์ที่กำลังจัดรูปแบบ ระบุสตริงรูปแบบตัวเลขมาตรฐานหรือแบบกำหนดเองหากออบเจ็กต์ที่เกี่ยวข้องเป็นค่าตัวเลข สตริงรูปแบบวันที่และเวลามาตรฐานหรือแบบกำหนดเองหากออบเจ็กต์ที่สอดคล้องกันคือออบเจ็กต์ DateTime หรือสตริงรูปแบบการแจงนับหากออบเจ็กต์ที่เกี่ยวข้องเป็นค่าการแจงนับ หากไม่ได้ระบุ formatString จะใช้ตัวระบุรูปแบบทั่วไป (G) สำหรับตัวเลข วันที่และเวลา หรือประเภทการแจงนับ จำเป็นต้องมีเครื่องหมายทวิภาคหากระบุ formatString
โปรดทราบว่าในกรณีของคุณ คุณจะมีเพียงดัชนีและสตริงรูปแบบเท่านั้น คุณยังไม่ได้ระบุ (และไม่จำเป็นต้อง) องค์ประกอบการจัดตำแหน่ง
Int32
ให้เต็มแล้วเขียนเป็น {0:X6} (หรือ {0:X8} หากค่าอัลฟ่ามีความหมายต่อคุณ)
- person BrainSlugs83; 16.09.2015
คุณยังสามารถวางอักขระที่เหลือโดยการใส่ตัวเลขตามหลัง X
เช่น: string.format("0x{0:X8}", string_to_modify)
ซึ่งให้ผลลัพธ์ "0x00000C20"
แปลสี UInt32 ที่แต่งแล้ว Value
เป็น CSS ใน .NET
ฉันรู้ว่าคำถามนี้ใช้กับค่าอินพุต 3 ค่า (red
green
blue
) แต่อาจมีสถานการณ์ที่คุณมี 32 บิต Value
ที่แต่งไว้แล้ว ดูเหมือนว่าคุณต้องการส่งข้อมูลไปยังตัวเรนเดอร์ HTML CSS บางตัว (เนื่องจากรูปแบบ #HEX) จริงๆ แล้ว CSS ต้องการให้คุณพิมพ์เลขฐานสิบหกที่เติมศูนย์ 6 หลักหรืออย่างน้อย 3 หลักที่นี่ ดังนั้นจึงต้องระบุ #{0:X06}
หรือ #{0:X03}
เนื่องจากพฤติกรรมแปลก ๆ สิ่งนี้จะพิมพ์ตัวเลข 8 หลักแทนที่จะเป็น 6 เสมอ
แก้ไขปัญหานี้โดย:
String.Format("#{0:X02}{1:X02}{2:X02}", (Value & 0x00FF0000) >> 16, (Value & 0x0000FF00) >> 8, (Value & 0x000000FF) >> 0)
ให้เป็นปกติมากกว่านี้.
byte[] buf = new byte[] { 123, 2, 233 };
string s = String.Concat(buf.Select(b => b.ToString("X2")));
หากเรามีฟังก์ชันในตัวเพื่อแปลงค่าจำนวนเต็มของคุณเป็น COLOR แล้วทำไมต้องกังวล
string hexValue = string.Format("{0:X}", intColor);
Color brushes = System.Drawing.ColorTranslator.FromHtml("#"+hexValue);
Red, Green, Blue
สำหรับสตริงสี RGB Hex ใช่หรือไม่ - person mellamokb   schedule 23.07.2012