Перенос слов в DrawText

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Перенос слов в DrawText

Post by borr_1 »

Есть длинные строки текста которые нужно нарисовать. Нашел тут ф-ю

Code: Select all

wxArrayString PrintPanel::GetWrappedText(wxDC *dc, wxString str, int Length, bool bySpace)
{
    wxArrayString aryStr;
    int textwidth = 0, textheight = 0;
    int Index = 0;
    wxString FullStr = str;
    do
    {
        dc->GetTextExtent(str, &textwidth, &textheight);
        if(textwidth>Length)
        {
            Index = 0;
            do
            {

            	str = str.Left(str.Length()-1);
                Index++;
                dc->GetTextExtent(str, &textwidth, &textheight);
                wxLogDebug(wxT("GetWrappedText=%s, textwidth=%i"), str.c_str(), textwidth);
                if(str == wxT("") && str == wxEmptyString)
                	break;
                wxString c = wxString(str.Last());
                if(!bySpace){
					if(textwidth<Length /*&& c == wxT(" ")*/)
						break;
                }
				else{
					if(textwidth<Length && c == wxT(" "))
						break;
				}

            }while(1);

            aryStr.Add(str);
            str = FullStr.Right(Index);
        }
        else
            break;
    }while(1);
    aryStr.Add(str);
    return aryStr;
}
http://forums.wxwidgets.org/viewtopic.p ... light=wrap

Все бы ничего да уже при небольшом количестве на страницу. Начинаются жуткие тормоза при отрисовке. Скролить просто невозможно. Помогите разрешить проблему.
wxBufferedDC в OnPaint попробовал либо я что-то не так понял либо тоже не работает
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse
Post Reply