匯東網


瀏覽 EGE 源碼隨記

[編輯] [转简体]
|
作者:huidong | 分類:【編程】EasyX
[ 24 瀏覽 0 評論 2 贊 5 踩 ]

概要
記錄一下 EGE 中一些也許有用的實現細節

正文

鏈接 GDI+ 需要考慮 x64 的情況(ege.h)

#if !defined(EGE_GRAPH_LIB_BUILD) && !defined(EGE_GRAPH_NO_LIB)
#    ifdef _MSC_VER
#        pragma comment(lib,"gdiplus.lib")
#        ifdef _WIN64 // 64 bit libs
#            pragma comment(lib,"graphics64.lib")
#        else   // 32 bit libs
#            pragma comment(lib,"graphics.lib")
#        endif
#    endif
#endif


RGB 宏設置了 alpha 值爲 255

#define EGERGBA(r, g, b, a)     ((::ege::color_t)( ((r)<<16) | ((g)<<8) | (b) | ((a)<<24) ))
#define EGERGB(r, g, b)         EGERGBA(r, g, b, 0xFF)
#define EGEARGB(a, r, g, b)     EGERGBA(r, g, b, a)
#define EGEACOLOR(a, color)     ((::ege::color_t)( ((color) & 0xFFFFFF) | ((a)<<24) ))
#define EGECOLORA(color, a)     EGEACOLOR(a, color)
#define EGEGET_R(c)             ( ((c)>>16) & 0xFF )
#define EGEGET_G(c)             ( ((c)>> 8) & 0xFF )
#define EGEGET_B(c)             ( ((c)) & 0xFF )
#define EGEGET_A(c)             ( ((c)>>24) & 0xFF )
#define EGEGRAY(gray)           EGERGB(gray, gray, gray)
#define EGEGRAYA(gray, a)       EGERGBA(gray, gray, gray, a)
#define EGEAGRAY(a, gray)       EGEGRAYA(gray, a)


給出 PI

const double PI = 3.1415926535897932384626;


給出更多預設顏色

// 颜色
enum COLORS {
    ALICEBLUE              = EGERGB(0xF0, 0xF8, 0xFF),
    ANTIQUEWHITE           = EGERGB(0xFA, 0xEB, 0xD7),
    AQUA                   = EGERGB(0x00, 0xFF, 0xFF),
    AQUAMARINE             = EGERGB(0x7F, 0xFF, 0xD4),
    AZURE                  = EGERGB(0xF0, 0xFF, 0xFF),
    BEIGE                  = EGERGB(0xF5, 0xF5, 0xDC),
    BISQUE                 = EGERGB(0xFF, 0xE4, 0xC4),
    BLACK                  = EGERGB(0x00, 0x00, 0x00),
    BLANCHEDALMOND         = EGERGB(0xFF, 0xEB, 0xCD),
    BLUE                   = EGERGB(0x00, 0x00, 0xFF),
    BLUEVIOLET             = EGERGB(0x8A, 0x2B, 0xE2),
    BROWN                  = EGERGB(0xA5, 0x2A, 0x2A),
    BURLYWOOD              = EGERGB(0xDE, 0xB8, 0x87),
    CADETBLUE              = EGERGB(0x5F, 0x9E, 0xA0),
    CHARTREUSE             = EGERGB(0x7F, 0xFF, 0x00),
    CHOCOLATE              = EGERGB(0xD2, 0x69, 0x1E),
    CORAL                  = EGERGB(0xFF, 0x7F, 0x50),
    CORNFLOWERBLUE         = EGERGB(0x64, 0x95, 0xED),
    CORNSILK               = EGERGB(0xFF, 0xF8, 0xDC),
    CRIMSON                = EGERGB(0xDC, 0x14, 0x3C),
    CYAN                   = EGERGB(0x00, 0xFF, 0xFF),
    DARKBLUE               = EGERGB(0x00, 0x00, 0x8B),
    DARKCYAN               = EGERGB(0x00, 0x8B, 0x8B),
    DARKGOLDENROD          = EGERGB(0xB8, 0x86, 0x0B),
    DARKGRAY               = EGERGB(0xA9, 0xA9, 0xA9),
    DARKGREEN              = EGERGB(0x00, 0x64, 0x00),
    DARKKHAKI              = EGERGB(0xBD, 0xB7, 0x6B),
    DARKMAGENTA            = EGERGB(0x8B, 0x00, 0x8B),
    DARKOLIVEGREEN         = EGERGB(0x55, 0x6B, 0x2F),
    DARKORANGE             = EGERGB(0xFF, 0x8C, 0x00),
    DARKORCHID             = EGERGB(0x99, 0x32, 0xCC),
    DARKRED                = EGERGB(0x8B, 0x00, 0x00),
    DARKSALMON             = EGERGB(0xE9, 0x96, 0x7A),
    DARKSEAGREEN           = EGERGB(0x8F, 0xBC, 0x8F),
    DARKSLATEBLUE          = EGERGB(0x48, 0x3D, 0x8B),
    DARKSLATEGRAY          = EGERGB(0x2F, 0x4F, 0x4F),
    DARKTURQUOISE          = EGERGB(0x00, 0xCE, 0xD1),
    DARKVIOLET             = EGERGB(0x94, 0x00, 0xD3),
    DEEPPINK               = EGERGB(0xFF, 0x14, 0x93),
    DEEPSKYBLUE            = EGERGB(0x00, 0xBF, 0xFF),
    DIMGRAY                = EGERGB(0x69, 0x69, 0x69),
    DODGERBLUE             = EGERGB(0x1E, 0x90, 0xFF),
    FIREBRICK              = EGERGB(0xB2, 0x22, 0x22),
    FLORALWHITE            = EGERGB(0xFF, 0xFA, 0xF0),
    FORESTGREEN            = EGERGB(0x22, 0x8B, 0x22),
    FUCHSIA                = EGERGB(0xFF, 0x00, 0xFF),
    GAINSBORO              = EGERGB(0xDC, 0xDC, 0xDC),
    GHOSTWHITE             = EGERGB(0xF8, 0xF8, 0xFF),
    GOLD                   = EGERGB(0xFF, 0xD7, 0x00),
    GOLDENROD              = EGERGB(0xDA, 0xA5, 0x20),
    GRAY                   = EGERGB(0x80, 0x80, 0x80),
    GREEN                  = EGERGB(0x00, 0x80, 0x00),
    GREENYELLOW            = EGERGB(0xAD, 0xFF, 0x2F),
    HONEYDEW               = EGERGB(0xF0, 0xFF, 0xF0),
    HOTPINK                = EGERGB(0xFF, 0x69, 0xB4),
    INDIANRED              = EGERGB(0xCD, 0x5C, 0x5C),
    INDIGO                 = EGERGB(0x4B, 0x00, 0x82),
    IVORY                  = EGERGB(0xFF, 0xFF, 0xF0),
    KHAKI                  = EGERGB(0xF0, 0xE6, 0x8C),
    LAVENDER               = EGERGB(0xE6, 0xE6, 0xFA),
    LAVENDERBLUSH          = EGERGB(0xFF, 0xF0, 0xF5),
    LAWNGREEN              = EGERGB(0x7C, 0xFC, 0x00),
    LEMONCHIFFON           = EGERGB(0xFF, 0xFA, 0xCD),
    LIGHTBLUE              = EGERGB(0xAD, 0xD8, 0xE6),
    LIGHTCORAL             = EGERGB(0xF0, 0x80, 0x80),
    LIGHTCYAN              = EGERGB(0xE0, 0xFF, 0xFF),
    LIGHTGOLDENRODYELLOW   = EGERGB(0xFA, 0xFA, 0xD2),
    LIGHTGRAY              = EGERGB(0xD3, 0xD3, 0xD3),
    LIGHTGREEN             = EGERGB(0x90, 0xEE, 0x90),
    LIGHTPINK              = EGERGB(0xFF, 0xB6, 0xC1),
    LIGHTSALMON            = EGERGB(0xFF, 0xA0, 0x7A),
    LIGHTSEAGREEN          = EGERGB(0x20, 0xB2, 0xAA),
    LIGHTSKYBLUE           = EGERGB(0x87, 0xCE, 0xFA),
    LIGHTSLATEGRAY         = EGERGB(0x77, 0x88, 0x99),
    LIGHTSTEELBLUE         = EGERGB(0xB0, 0xC4, 0xDE),
    LIGHTYELLOW            = EGERGB(0xFF, 0xFF, 0xE0),
    LIGHTRED               = EGERGB(0xFC, 0x54, 0x54),
    LIGHTMAGENTA           = EGERGB(0xFC, 0x54, 0xFC),
    LIME                   = EGERGB(0x00, 0xFF, 0x00),
    LIMEGREEN              = EGERGB(0x32, 0xCD, 0x32),
    LINEN                  = EGERGB(0xFA, 0xF0, 0xE6),
    MAGENTA                = EGERGB(0xFF, 0x00, 0xFF),
    MAROON                 = EGERGB(0x80, 0x00, 0x00),
    MEDIUMAQUAMARINE       = EGERGB(0x66, 0xCD, 0xAA),
    MEDIUMBLUE             = EGERGB(0x00, 0x00, 0xCD),
    MEDIUMORCHID           = EGERGB(0xBA, 0x55, 0xD3),
    MEDIUMPURPLE           = EGERGB(0x93, 0x70, 0xDB),
    MEDIUMSEAGREEN         = EGERGB(0x3C, 0xB3, 0x71),
    MEDIUMSLATEBLUE        = EGERGB(0x7B, 0x68, 0xEE),
    MEDIUMSPRINGGREEN      = EGERGB(0x00, 0xFA, 0x9A),
    MEDIUMTURQUOISE        = EGERGB(0x48, 0xD1, 0xCC),
    MEDIUMVIOLETRED        = EGERGB(0xC7, 0x15, 0x85),
    MIDNIGHTBLUE           = EGERGB(0x19, 0x19, 0x70),
    MINTCREAM              = EGERGB(0xF5, 0xFF, 0xFA),
    MISTYROSE              = EGERGB(0xFF, 0xE4, 0xE1),
    MOCCASIN               = EGERGB(0xFF, 0xE4, 0xB5),
    NAVAJOWHITE            = EGERGB(0xFF, 0xDE, 0xAD),
    NAVY                   = EGERGB(0x00, 0x00, 0x80),
    OLDLACE                = EGERGB(0xFD, 0xF5, 0xE6),
    OLIVE                  = EGERGB(0x80, 0x80, 0x00),
    OLIVEDRAB              = EGERGB(0x6B, 0x8E, 0x23),
    ORANGE                 = EGERGB(0xFF, 0xA5, 0x00),
    ORANGERED              = EGERGB(0xFF, 0x45, 0x00),
    ORCHID                 = EGERGB(0xDA, 0x70, 0xD6),
    PALEGOLDENROD          = EGERGB(0xEE, 0xE8, 0xAA),
    PALEGREEN              = EGERGB(0x98, 0xFB, 0x98),
    PALETURQUOISE          = EGERGB(0xAF, 0xEE, 0xEE),
    PALEVIOLETRED          = EGERGB(0xDB, 0x70, 0x93),
    PAPAYAWHIP             = EGERGB(0xFF, 0xEF, 0xD5),
    PEACHPUFF              = EGERGB(0xFF, 0xDA, 0xB9),
    PERU                   = EGERGB(0xCD, 0x85, 0x3F),
    PINK                   = EGERGB(0xFF, 0xC0, 0xCB),
    PLUM                   = EGERGB(0xDD, 0xA0, 0xDD),
    POWDERBLUE             = EGERGB(0xB0, 0xE0, 0xE6),
    PURPLE                 = EGERGB(0x80, 0x00, 0x80),
    RED                    = EGERGB(0xFF, 0x00, 0x00),
    ROSYBROWN              = EGERGB(0xBC, 0x8F, 0x8F),
    ROYALBLUE              = EGERGB(0x41, 0x69, 0xE1),
    SADDLEBROWN            = EGERGB(0x8B, 0x45, 0x13),
    SALMON                 = EGERGB(0xFA, 0x80, 0x72),
    SANDYBROWN             = EGERGB(0xF4, 0xA4, 0x60),
    SEAGREEN               = EGERGB(0x2E, 0x8B, 0x57),
    SEASHELL               = EGERGB(0xFF, 0xF5, 0xEE),
    SIENNA                 = EGERGB(0xA0, 0x52, 0x2D),
    SILVER                 = EGERGB(0xC0, 0xC0, 0xC0),
    SKYBLUE                = EGERGB(0x87, 0xCE, 0xEB),
    SLATEBLUE              = EGERGB(0x6A, 0x5A, 0xCD),
    SLATEGRAY              = EGERGB(0x70, 0x80, 0x90),
    SNOW                   = EGERGB(0xFF, 0xFA, 0xFA),
    SPRINGGREEN            = EGERGB(0x00, 0xFF, 0x7F),
    STEELBLUE              = EGERGB(0x46, 0x82, 0xB4),
    TAN                    = EGERGB(0xD2, 0xB4, 0x8C),
    TEAL                   = EGERGB(0x00, 0x80, 0x80),
    THISTLE                = EGERGB(0xD8, 0xBF, 0xD8),
    TOMATO                 = EGERGB(0xFF, 0x63, 0x47),
    TURQUOISE              = EGERGB(0x40, 0xE0, 0xD0),
    VIOLET                 = EGERGB(0xEE, 0x82, 0xEE),
    WHEAT                  = EGERGB(0xF5, 0xDE, 0xB3),
    WHITE                  = EGERGB(0xFF, 0xFF, 0xFF),
    WHITESMOKE             = EGERGB(0xF5, 0xF5, 0xF5),
    YELLOW                 = EGERGB(0xFF, 0xFF, 0x00),
    YELLOWGREEN            = EGERGB(0x9A, 0xCD, 0x32),
};


提供一些填充模式,不知道這些是不是都是 GDI/GDI+ 本身就支持的?沒有確認在 EasyX 中支持哪些。

// 填充模式
enum fill_patterns {/* Fill patterns for get/setfillstyle */
    EMPTY_FILL,     /* fills area in background color */
    SOLID_FILL,     /* fills area in solid fill color */
    LINE_FILL,      /* --- fill */
    LTSLASH_FILL,   /* /// fill */
    SLASH_FILL,     /* /// fill with thick lines */
    BKSLASH_FILL,   /*fill with thick lines */
    LTBKSLASH_FILL, /*fill */
    HATCH_FILL,     /* light hatch fill */
    XHATCH_FILL,    /* heavy cross hatch fill */
    INTERLEAVE_FILL,/* interleaving line fill */
    WIDE_DOT_FILL,  /* Widely spaced dot fill */
    CLOSE_DOT_FILL, /* Closely spaced dot fill */
    USER_FILL       /* user defined fill */
};


可供參考的一些選項

enum text_just {        /* Horizontal and vertical justification
                        for settextjustify */
    LEFT_TEXT   = 0,
    CENTER_TEXT = 1,
    RIGHT_TEXT  = 2,

    BOTTOM_TEXT = 0,
    /* CENTER_TEXT = 1,  already defined above */
    TOP_TEXT    = 2
};

enum line_styles {      /* Line styles for get/setlinestyle */
    SOLID_LINE      = PS_SOLID,
    CENTER_LINE     = PS_DASH,
    DOTTED_LINE     = PS_DOT,
    DASHED_LINE     = PS_DASHDOT,
    NULL_LINE       = PS_NULL,
    USERBIT_LINE    = PS_USERSTYLE,   /* User defined line style */
};


[ 2] [ 5]


 評論區  0 條評論

+ 添加評論