2

私は、テキスト属性を使用して、次のようなものを使用して書き込まれるテキストの色やその他の側面を決定するGTK+アプリケーションを作成しています。PangoGtkLabel

attributes = pango_attr_list_new();
pango_attr_list_insert(attributes, pango_attr_foreground_new( G_MAXUINT16, G_MAXUINT16, G_MAXUINT16));
pango_attr_list_insert(attributes, pango_attr_size_new (18 * PANGO_SCALE));
pango_attr_list_insert(attributes, pango_attr_weight_new( PANGO_WEIGHT_BOLD ));

lblTotalCredits = gtk_label_new(NULL);
gtk_label_set_text(GTK_LABEL(lblTotalCredits),"0");
gtk_label_set_attributes(GTK_LABEL(lblTotalCredits), attributes);

pango_attr_foreground_new()各色成分(R、G、B)は16ビットであると想定しています。Photoshopまたは他の画像処理ツールを使用して、使用したい色を見つけることができますが、R、G、B値は8ビットのR、G、Bコンポーネントとして表示されます。

8ビットのR、G、B値を同等の16ビットのR、G、B値に変換して、同じ色になるようにするにはどうすればよいですか?

たとえば、金色はRGB(229、202、115)または16進数のe5ca73として指定されます。関数の各色成分が16ビットになるように変換するにはどうすればよいpangoですか?

4

1 に答える 1

3

最大8ビット:0xFF
最大16ビット:0xFFFF

変換(私はデモとして赤を使用します)(テストされていません):

guint32 colorhex = 0xe5ca73;
const guint8 red8 = (guint8)((colorhex & 0xFF0000) >> 16);
//    guint16 red16 = (guint16)(((guint32)(r * 0xFFFF / 0xFF)) & 0xFFFF);
guint16 red16 = ((guint16)red8 << 8) | red8;
于 2012-08-20T19:12:17.943 に答える