Конвертировать C Определить макрос в C # - PullRequest
2 голосов
/ 03 июня 2011

Как я могу преобразовать этот макрос определения C в C #?

#define CMYK(c,m,y,k)       ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24)))

Я искал пару дней и не смог понять это. Любая помощь будет оценена.

Ответы [ 2 ]

5 голосов
/ 03 июня 2011

C # не поддерживает #define макросы.Вы можете выбрать функцию преобразования или класс COLORREF с конструктором преобразования.

public class CMYKConverter
{
    public static int ToCMYK(byte c, byte m, byte y, byte k)
    {
        return k | (y << 8) | (m << 16) | (c << 24);
    }
}

public class COLORREF
{
    int value;
    public COLORREF(byte c, byte m, byte y, byte k)
    {
        this.value = k | (y << 8) | (m << 16) | (c << 24);
    }
}
1 голос
/ 03 июня 2011

C # не поддерживает C / C ++, как макросы. Не существует эквивалента #define для функций, подобных выражениям. Вам нужно будет написать это как фактический метод объекта.

...