绘图货币符号

时间:2010-01-09 07:51:19

标签: iphone

如何使用draw rect中的CGContextShowTextAtPoint方法在自定义标签中绘制货币符号。 这里的符号是字符串格式。

任何帮助!! 感谢

2 个答案:

答案 0 :(得分:0)

我真的没有得到你所要求的, 检查文档,该方法看起来像这样:

 CGContextRef ctx = UIGraphicsGetCurrentContext(); 
 const char *string = "$";
 CGContextShowTextAtPoint (ctx, 160, 240, string, 1);

尚未测试过,但这应该在屏幕中央绘制$。
顺便说一句,为什么不使用图像?

~Natanavra。

答案 1 :(得分:0)

您必须使用C样式字符串,因为这是CGContextShowTextAtPoint()所要求的。为了正确处理区域设置(货币符号随区域设置而变化),您必须使用setlocale(),然后使用strfmon()格式化字符串,最后传递使用strfmon(创建的字符串)到CGContextShowTextAtPoint()

终端提供以下文件:

man 3 setlocale
man 3 strfmon

编辑/更新:为了您的信息,strfmon()在内部使用struct lconv。可以使用函数localeconv()检索结构。有关结构中可用字段的详细说明,请参阅man 3 localeconv

例如,尝试以下简单的C程序设置不同的语言环境

#include <stdio.h>
#include <locale.h>
#include <monetary.h>

int main(void)
{
    char buf[BUFSIZ];
    double val = 1234.567;

    /* use your current locale */
    setlocale(LC_ALL, ""); 

    /* uncomment the next line and try this to use italian locale */
    /* setlocale(LC_ALL, "it_IT"); */ 
    strfmon(buf, sizeof buf, "You owe me %n (%i)\n", val, val);

    fputs(buf, stdout);
    return 0;
}

以下使用localeconv()

#include <stdio.h>
#include <limits.h>
#include <locale.h>

int main(void)
{
    struct lconv l;
    int i;

    setlocale(LC_ALL, "");
    l = *localeconv();

    printf("decimal_point = [%s]\n", l.decimal_point);
    printf("thousands_sep = [%s]\n", l.thousands_sep);

    for (i = 0; l.grouping[i] != 0 && l.grouping[i] != CHAR_MAX; i++)
        printf("grouping[%d] = [%d]\n", i, l.grouping[i]);

    printf("int_curr_symbol = [%s]\n", l.int_curr_symbol);
    printf("currency_symbol = [%s]\n", l.currency_symbol);
    printf("mon_decimal_point = [%s]\n", l.mon_decimal_point);
    printf("mon_thousands_sep = [%s]\n", l.mon_thousands_sep);
    printf("positive_sign = [%s]\n", l.positive_sign);
    printf("negative_sign = [%s]\n", l.negative_sign);
}