Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывод текста на Image

36K
16 марта 2010 года
Overmax2
63 / / 11.02.2010
Небольшой вопрос:
Как вывести текст на Image не горизонтально а вертикально?
36K
21 марта 2010 года
Overmax2
63 / / 11.02.2010
Ещё вопрос по этой теме, хочу узнать длину строки String в пикселях, как это сделать. Строку не от куда не ввожу, она задаётся просто по ходу программы простым присваиванием.

Вот это не работает.
 
Код:
AnsiString a="Hello";
TCanvas *Canvas=new TCanvas();
int WidthOfString = Canvas->TextWidth(a);
int HeightOfString = Canvas->TextHeight(a);
TSize SizeOfString = Canvas->TextExtent(a);
253
21 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: Overmax2

Вот это не работает


Почему?
Ну, попробуйте в сторону API посмотреть: GetTextExtentPoint32

7
21 марта 2010 года
@pixo $oft
3.4K / / 20.09.2006
Что именно не работает?Поясните,мы того,что вы видите,не видим
Можно воспользоваться GetTextExtentPoint
36K
21 марта 2010 года
Overmax2
63 / / 11.02.2010
Да и ещё вопрос: как после вывода теста под углом вернуть всё обратно?

И ещё это единственный способ или есть ещё какие предложения?
36K
21 марта 2010 года
Overmax2
63 / / 11.02.2010
 
Код:
AnsiString a="Hello";
TCanvas *Canvas=new TCanvas();
int WidthOfString = Canvas->TextWidth(a);
int HeightOfString = Canvas->TextHeight(a);
TSize SizeOfString = Canvas->TextExtent(a);


Это не работает, выдаёт ошибку:
"Canvas does not allow drawing"
36K
21 марта 2010 года
Overmax2
63 / / 11.02.2010
Если можно пример как это рабоатет, я тока начинаю программировать так не пойму.
GetTextExtentPoint
253
21 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: Overmax2

Это не работает, выдаёт ошибку:
"Canvas does not allow drawing"


А, так конечно - Canvas ни к чему не привязан. Создай TBitmap, у него свой Canvas уже есть в комплекте.

Цитата:
Можно воспользоваться GetTextExtentPoint


Однако не рекомендуется:

Цитата:
Note This function is provided only for compatibility with 16-bit versions of Windows. Applications should call the GetTextExtentPoint32 function, which provides more accurate results.

36K
21 марта 2010 года
Overmax2
63 / / 11.02.2010
Вот этот код работает:
 
Код:
Graphics::TBitmap *Text=new Graphics::TBitmap();
int WidthTitl=Text->Canvas->TextWidth(titl);
int HeightTitl=Text->Canvas->TextHeight(titl);
Img->Canvas->TextOutA(10,10,titl+" "+IntToStr(WidthTitl)+" "+IntToStr(HeightTitl));


Но по моему как то это не красиво.

Если не трудно, пример с GetTextExtentPoint32 выложите плиз, просто хочу посмотреть как работает.
253
21 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: Overmax2
Но по моему как то это не красиво.


Странные у тебя понятия :)

Цитата: Overmax2
Если не трудно примерчик с GetTextExtentPoint, просто хочу посмотреть как работает.


Переложи на Си:

 
Код:
// TSize Extent
GetTextExtentPoint32(Bitmap.Canvas.Handle, Text, Length(Text), Extent);

Тоже самое ты можешь увидеть в исходниках метода TextExtent, кстати (Ctrl+клик по имени метода).
36K
22 марта 2010 года
Overmax2
63 / / 11.02.2010
Так всем спасибо с эти разобрались, но вот ещё вопросик:

Вот для создания стиля вывода текста на Image.
 
Код:
LOGFONT lf;                      
 Img->Canvas->Brush->Style = bsClear;
 ZeroMemory(&lf, sizeof(LOGFONT));  
 lf.lfHeight = 15;                  
 lf.lfEscapement = 90*10 ; // угол поворота например: 45*00" = 450
 lf.lfCharSet = DEFAULT_CHARSET;      
 strcpy(lf.lfFaceName, "Times New Roman");      
 Img->Canvas->Font->Handle = CreateFontIndirect(&lf);


Но как сделать жирный шрифт я не пойму.
36K
22 марта 2010 года
Overmax2
63 / / 11.02.2010
Уже разобрался, как вариант вот это:

Код:
LOGFONT lf;                        
 Img->Canvas->Brush->Style = bsClear;    
 ZeroMemory(&lf, sizeof(LOGFONT));  
 lf.lfHeight = 15;                  
 lf.lfEscapement = 90*10 ;
 lf.lfCharSet = DEFAULT_CHARSET;      
 strcpy(lf.lfFaceName, "Times New Roman");  
 Img->Canvas->Font->Handle = CreateFontIndirect(&lf);
 
[COLOR="Red"]Img->Canvas->Font->Style=TFontStyles()<<fsBold[/COLOR];

Img->Canvas->TextOutA(100,100,"Rotated text ");


Может кто знает ещё какие способы?
14
22 марта 2010 года
Phodopus
3.3K / / 19.06.2008
lf.lfWeight = FW_BOLD;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог