Преобразуйте.Net Color Objects для ПРЕОБРАЗОВЫВАНИЯ кодов в шестнадцатеричную систему и Назад

В ожидании лучших решений я решил это следующим образом:

class MyModel(models.Model):
    def _is_something(self):
        if self.something == 'something':
            return True
        return False
    _is_something.boolean = True
    is_something = property(_is_something)

Затем я буду ссылаться на метод _is_something в подклассе ModelAdmin:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ['_is_something']

И свойство is_something в противном случае:

if my_model_instance.is_something:
    print("I'm something")
15
задан Jon Seigel 17 April 2010 в 23:13
поделиться

3 ответа

Примерно так:

Color color = Color.Red;
string colorString = string.Format("#{0:X2}{1:X2}{2:X2}",
    color.R, color.G, color.B);

Выполнить другой способ немного сложнее, поскольку # F00 - допустимый цвет HTML (что означает полный красный), но это все еще можно выполнить с помощью регулярного выражения, вот небольшой пример класса:

using System;
using System.Diagnostics;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Collections.Generic;

public static class HtmlColors
{
    public static string ToHtmlHexadecimal(this Color color)
    {
        return string.Format("#{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B);
    }

    static Regex htmlColorRegex = new Regex(
        @"^#((?'R'[0-9a-f]{2})(?'G'[0-9a-f]{2})(?'B'[0-9a-f]{2}))"
        + @"|((?'R'[0-9a-f])(?'G'[0-9a-f])(?'B'[0-9a-f]))$",
        RegexOptions.Compiled | RegexOptions.IgnoreCase);

    public static Color FromHtmlHexadecimal(string colorString)
    {
        if (colorString == null)
        {
            throw new ArgumentNullException("colorString");
        }

        var match = htmlColorRegex.Match(colorString);
        if (!match.Success)
        {
            var msg = "The string \"{0}\" doesn't represent"
            msg += "a valid HTML hexadecimal color";
            msg = string.Format(msg, colorString);

            throw new ArgumentException(msg,
                "colorString");
        }

        return Color.FromArgb(
            ColorComponentToValue(match.Groups["R"].Value),
            ColorComponentToValue(match.Groups["G"].Value),
            ColorComponentToValue(match.Groups["B"].Value));
    }

    static int ColorComponentToValue(string component)
    {
        Debug.Assert(component != null);
        Debug.Assert(component.Length > 0);
        Debug.Assert(component.Length <= 2);

        if (component.Length == 1)
        {
            component += component;
        }

        return int.Parse(component,
            System.Globalization.NumberStyles.HexNumber);
    }
}

Использование:

// Display #FF0000
Console.WriteLine(Color.Red.ToHtmlHexadecimal());

// Display #00FF00
Console.WriteLine(HtmlColors.FromHtmlHexadecimal("#0F0").ToHtmlHexadecimal());

// Display #FAF0FE
Console.WriteLine(HtmlColors.FromHtmlHexadecimal("#FAF0FE").ToHtmlHexadecimal());
26
ответ дан 1 December 2019 в 01:17
поделиться

«Белый» - допустимый цвет HTML. См. ColorTranslator.ToHtml :

Этот метод переводит Color структура в строковое представление цвета HTML. Это обычно используемое название цвета, например "Красный", «Синий» или «Зеленый», а не нить представление числового цвета значение, такое как «FF33AA».

Если ваш цвет не может быть сопоставлен с цветовой строкой HTML, этот метод вернет действительный шестнадцатеричный код для цвета. См. Этот пример:

using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        Console.WriteLine(ColorTranslator.ToHtml(Color.White));
        Console.WriteLine(ColorTranslator.ToHtml(Color.FromArgb(32,67,89)));
    }
}
12
ответ дан 1 December 2019 в 01:17
поделиться
-3
ответ дан 1 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: