Ejemplo n.º 1
0
    public static int OutputRichText(
        int nFontId,                       //## 使用的字体对象id。
        IntPtr pParam,                     //
        IntPtr psText,                     //## 要输出的字符串。
        int nCount     = GLB.KRF_ZERO_END, //## 要输出的字符串的长度(BYTE)。\当nCount大于等于0时,字符串可以不包括特殊的结束符号来表示输出字符的结束。\当nCount小于0时,表示此字符串是以'\0'结尾,且中间不存在'\0'的字符。\默认值为-1。
        int nLineWidth = 0                 //##Documentation\自动换行的行宽限制,如果其值小于一个全角字符宽度则不做自动换行处理。默认值为0,既不做自动换行处理。
        )
    {
        // todo: txt address + xy to uuid
        long   uuid   = (long)psText;
        string sText2 = Marshal.PtrToStringAnsi(psText);

        byte[] txtbuff = new byte[nCount + 1];
        Marshal.Copy(psText, txtbuff, 0, nCount);
        string sText = GLB.GBK.GetString(txtbuff);
        //Debug.Log(sText);
        KOutputTextParam param = (KOutputTextParam)Marshal.PtrToStructure(pParam, typeof(KOutputTextParam));
        int   nX = param.nX;
        int   nY = param.nY;
        float x  = (float)nX / 100;
        float y  = 8.0f - (float)nY / 100;
        float z  = zbuff;

        zbuff -= 0.1f;
        //Debug.Log(string.Format("OutputRichText: {0} : {1} @ [{2}, {3}]", sText, nCount, nX, nY));
        SprMgr.DrawText(uuid, sText, x, y, z);
        return(1);
    }
Ejemplo n.º 2
0
    public static void OutputText(
        int nFontId,                                       //## 使用的字体对象id。
        IntPtr psText,                                     //## 要输出的字符串。
        int nCount       = GLB.KRF_ZERO_END,               //## 要输出的字符串的长度(BYTE)。\当nCount大于等于0时,字符串可以不包括特殊的结束符号来表示输出字符的结束。\当nCount小于0时,表示此字符串是以'\0'结尾,将根据结束字符来确定输出字符串的长度。\默认值为-1。
        int nX           = GLB.KRF_FOLLOW,                 //## 字符串显示起点坐标X,如果传入值为KF_FOLLOW,\则此字符串紧接在上次字符串的输出位置之后。\默认值为KRF_FOLLOW。
        int nY           = GLB.KRF_FOLLOW,                 //## 字符串显示起点坐标Y, 如果传入值为KF_FOLLOW,\此字符串与前一次输出字符串在同一行的位置。\默认值为KRF_FOLLOW。
        uint Color       = 0xFF000000,                     //## 字符串显示颜色,默认为黑色,用32bit数以ARGB的格\式表示颜色,每个分量8bit。
        int nLineWidth   = 0,                              //## 自动换行的行宽限制,如果其值小于一个全角字符宽度则不做自动换行处理。默认值为0,既不做自动换行处理。
        int nZ           = GLB.TEXT_IN_SINGLE_PLANE_COORD, //
        uint BorderColor = 0                               //字的边缘颜色
        )
    {
        long   uuid  = (long)psText;
        string sText = Marshal.PtrToStringAnsi(psText);
        //Debug.Log(string.Format("OutputText: {0} : {1} @ [{2}, {3}]", sText, nCount, nX, nY));
        float x = (float)nX / 100;
        float y = 8.0f - (float)nY / 100;
        float z = zbuff;

        zbuff -= 0.1f;
        SprMgr.DrawText(uuid, sText, x, y, z);
        //g_pRepresent->OutputText(12, szDebugRef, KRF_ZERO_END, nX, nY, 0xffffffff, 0, 0);
    }