Показать сообщение отдельно
Старый 24.08.2009, 09:54   #36
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: Разработка игры "DooM story"

я бы написал для всей строки сразу: drawtext(s, maxw-getStringWidth(s),ypos);
где s - строка текста, maxw-граница правого края, ypos - у координата
и для посимвольного вывода:
var
  cw : array[0..255] of integer;
  i,p,c : integer;
begin
  for i:=0 to 255 do cw[i]:=getStringWidth(chr(i));
  // затем подставляем сюда ширину русского шрифт желательно в cp1251 (win) или cp866 (dos)
  ...
  p:=maxw;
  for i:=length(s)-1 downto 0 do
  begin
    c:=ord(getChar(s,i));
    p:=p-cw[c];
    ... делаем преобразование русских символов в utf8 и выводим
    drawtext(chr(c),p,ypos);
  end;
___
p.s. png нужно оптимизировать, 500 кб слишком много. Лучше сразу делать графику под разрешение 176x208 (176x220) т.к. они наиболее распространены, или 128x128 чтоб работало практически везде.

Последний раз редактировалось abcdef, 24.08.2009 в 10:01.
(Offline)
 
Ответить с цитированием