此问题的原因是阿拉伯语传下的x坐标需要是字符串最右边的坐标,否则显示会有问题
修改方法如下:
以下方法修改函数VappImgEdtTextPage::redrawText(),谢谢.
void VappImgEdtTextPage::redrawText()
{
VFX_ASSERT(m_gdiHdl != 0);
VfxPoint offset(0,0);
vrt_text_dir_type_enum dir = vrt_sys_get_text_dir();
if(dir == MG_TEXT_DIR_TYPE_L2R)
{
offset.x = (m_textFrameSize.width - m_strSize.width)/2;
}
else if(dir == MG_TEXT_DIR_TYPE_R2L)
{
offset.x = (m_textFrameSize.width - m_strSize.width)/2 + m_strSize.width;
}
offset.y = (m_textFrameSize.height - m_strSize.height)/2;
VAPP_IMGEDT_INFO_TRACE(offset.x);
VAPP_IMGEDT_INFO_TRACE(offset.y);
gdi_layer_push_and_set_active(m_gdiHdl);
gdi_layer_clear(GDI_COLOR_TRANSPARENT);
gui_push_text_clip();
gui_set_text_color(gui_color(g_imgedt_text_color_list[m_colorIndx].r,
g_imgedt_text_color_list[m_colorIndx].g,
g_imgedt_text_color_list[m_colorIndx].b));
if(dir == MG_TEXT_DIR_TYPE_L2R)
{
gui_set_text_clip(offset.x, offset.y, offset.x + m_strSize.width, offset.y +
m_strSize.height);
}
else if(dir == MG_TEXT_DIR_TYPE_R2L)
{
gui_set_text_clip(offset.x - m_strSize.width, offset.y, offset.x, offset.y +
m_strSize.height);
}
gui_move_text_cursor(offset.x, offset.y);
gui_print_text((UI_string_type)m_string.getBuf());
gui_pop_text_clip();
gdi_layer_pop_and_restore_active();
}
修改方法如下:
以下方法修改函数VappImgEdtTextPage::redrawText(),谢谢.
void VappImgEdtTextPage::redrawText()
{
VFX_ASSERT(m_gdiHdl != 0);
VfxPoint offset(0,0);
vrt_text_dir_type_enum dir = vrt_sys_get_text_dir();
if(dir == MG_TEXT_DIR_TYPE_L2R)
{
offset.x = (m_textFrameSize.width - m_strSize.width)/2;
}
else if(dir == MG_TEXT_DIR_TYPE_R2L)
{
offset.x = (m_textFrameSize.width - m_strSize.width)/2 + m_strSize.width;
}
offset.y = (m_textFrameSize.height - m_strSize.height)/2;
VAPP_IMGEDT_INFO_TRACE(offset.x);
VAPP_IMGEDT_INFO_TRACE(offset.y);
gdi_layer_push_and_set_active(m_gdiHdl);
gdi_layer_clear(GDI_COLOR_TRANSPARENT);
gui_push_text_clip();
gui_set_text_color(gui_color(g_imgedt_text_color_list[m_colorIndx].r,
g_imgedt_text_color_list[m_colorIndx].g,
g_imgedt_text_color_list[m_colorIndx].b));
if(dir == MG_TEXT_DIR_TYPE_L2R)
{
gui_set_text_clip(offset.x, offset.y, offset.x + m_strSize.width, offset.y +
m_strSize.height);
}
else if(dir == MG_TEXT_DIR_TYPE_R2L)
{
gui_set_text_clip(offset.x - m_strSize.width, offset.y, offset.x, offset.y +
m_strSize.height);
}
gui_move_text_cursor(offset.x, offset.y);
gui_print_text((UI_string_type)m_string.getBuf());
gui_pop_text_clip();
gdi_layer_pop_and_restore_active();
}