Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Вниз

реализовать подстрочный вывод текста   Найти похожие ветки 

 
wsih ©   (2006-05-25 21:23) [0]

Здраствуйте!
У меня сравнительно мало опыта в Delphi, (неожиданно для себя нахожу возможности, которые на несколько десятков а то и сотен строк сокращают код).
Стоит задача реализации подстрочного вывода текста на канву.
Есть какие нибуть идеи у кого-то?


 
wsih ©   (2006-05-25 21:35) [1]

Поправка - текста, который содержит в себе подстрочные символы.
И еще вопрос не в тему - это только у меня форум так странно обновляется или у всех?


 
Loginov Dmitry ©   (2006-05-25 21:45) [2]

Думаю, следует использовать
Canvas.TextOut и Canvas.Font


 
Leonid Troyanovsky ©   (2006-05-25 22:16) [3]


> wsih ©   (25.05.06 21:35) [1]

> И еще вопрос не в тему - это только у меня форум так странно
> обновляется или у всех?


А в чем странности обновления кажутся выделяющимися среди всех?

--
Regards, LVT.


 
wsih ©   (2006-05-25 22:40) [4]

To Leonid Troyanovsky
http://www.delphimaster.ru/cgi-bin/forum.pl?n=0 - здесь у меня в данный момент самая свежая - ветка 25.05.06 21:14.
Свою ветку я нахожу только через поиск, и то она у меня только после нескольких обновлений выводит все ответы (я надеюсь)... Firefox, IE. Кеш чистил.


 
wsih ©   (2006-05-25 22:45) [5]


> Loginov Dmitry ©   (25.05.06 21:45) [2]
> Думаю, следует использовать
> Canvas.TextOut и Canvas.Font

Разбивать строку посимвольно и после спец. символа или комбинации менять размер шрифта. А как вычислить координаты, по которым заканчивается "крупный" текст и начинается "мелкий"? Текст может выводится под углом.


 
Leonid Troyanovsky ©   (2006-05-25 22:49) [6]


> wsih ©   (25.05.06 22:40) [4]

> у меня в данный момент самая свежая - ветка 25.05.06 21:
> 14.


Однако, в зависимости от часового пояса это может быть
актуальное время?

Ну, и кроме того, возможны административные проблемы,
фаревол, ISA (или как его там?) и тп.

--
Regards, LVT.


 
Мефисто   (2006-05-25 22:52) [7]

wsih  ©   (25.05.06 22:45) [5]

>> У меня сравнительно мало опыта в Delphi, (неожиданно для себя нахожу возможности,
>> которые на несколько десятков а то и сотен строк сокращают код).

Заявленные желания в данные рамки не укладываются :) Стандартных решений нет. Следовательно используем, чье-то готовое или свое (руги, мозг) :) Для реализации данной задачи требуется немало времени и усилий.

Поищите на королевстве дельфи. Там была какаято библиотечка реализующие данные возможности. Только я не помню, как она называлась.


 
wsih ©   (2006-05-26 00:46) [8]

Ну что-ж. Буду полагаться на свои руки и мозг.
Вот первые мои зарисовки наскоро. Выводит в нижнем регистре 1 символ после "_" в горизонтальной строке.
Для того, что бы это все повернуть на любой угол проще всего - повернуть картинку с изображением оного. Как проще всего (повторяюсь - виной всему депривация сна) - повернуть канву?


 
wsih ©   (2006-05-26 00:47) [9]

пардон - совсем плохой
procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
x,y,i,z,l:integer;
flag:boolean;
begin
str:="X_i+Z_i:=Y_q";
x:=10;
y:=10;
z:=1;
flag:=false;
l:=Length(str);
for i:=0 to l-1 do begin
if z<l then begin
if Str[Z]="_" then
begin
 if flag=false then begin
   y:=y+round(img2.Canvas.TextHeight(str[z])/2);
   x:=x+img2.Canvas.TextWidth(str[z-1])+1;
   img2.Canvas.Font.Size:=round(img2.Canvas.Font.Size/10);
 end else x:=x+img2.Canvas.TextWidth(str[z-1])+1;
 flag:=true;
 inc(z);
   img2.Canvas.TextOut(x,y,String(str[z]));
 inc(z);
end
else begin
flag:=false;
 y:=10;
 img2.Canvas.Font.Size:=15;
 x:=x+img2.Canvas.TextWidth(Str[z-1])+1;
 img2.Canvas.TextOut(x,y,String(str[z]));
 inc(z);
end;
end;
end;
end;


 
Джо ©   (2006-05-26 00:51) [10]

> Для того, что бы это все повернуть на любой угол проще всего
> - повернуть картинку с изображением оного.

Нет, проще всего сразу выводить текст под нужным углом.
Т.е, в таком роде:

var
 LogFont : TLogFont;  
...
 with Canvas do
 begin
   GetObject(Font.Handle, SizeOf(TLogFont), @LogFont);
   LogFont.lfEscapement := FontAngle*10;
   Font.Handle := CreateFontIndirect(LogFont);
   TextOut...
...



 
wsih ©   (2006-05-26 00:55) [11]


> Нет, проще всего сразу выводить текст под нужным углом.


В моем случае - никак не проще... взгляните


y:=y+round(img2.Canvas.TextHeight(str[z])/2);
x:=x+img2.Canvas.TextWidth(str[z-1])+1;


 
Джо ©   (2006-05-26 00:56) [12]

> [11] wsih ©   (26.05.06 00:55)
> В моем случае - никак не проще... взгляните

И что это меняет, простите?


 
wsih ©   (2006-05-26 01:02) [13]


> И что это меняет, простите?
> <Цитата>


Посмотрите, как работает процедура [9]
она конечно кривовата )...
Суть такова: взять символ из строки. если встречается символ "_" - поменять координату Y, добавить к координате x - размер предидущего символа, вывести символ
else востановить Y;добавить к координате x - размер предидущего символа; вывести символ



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
2-1151034070
MasterDelphi
2006-06-23 07:41
2006.07.09
MySql


6-1141248626
Yegorchic
2006-03-02 00:30
2006.07.09
Не получается правильно переслать файл по сети


2-1150476240
Handle
2006-06-16 20:44
2006.07.09
CreateToolHelp32SnapShot


2-1150964235
Кирилл Таран
2006-06-22 12:17
2006.07.09
Как сделать анимацию?


1-1148621999
nopox
2006-05-26 09:39
2006.07.09
Доброго времени суток, Господа! проблема с IXMLDocument





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский