Вверх ↑
Этот топик читают: Гость
Ответов: 2193
Рейтинг: 673
#1: 2011-02-05 23:44:30 ЛС | профиль | цитата
Хотелось чтоб TextWidth и TextHeight в Img_Text работали в независимости от объекта вывода графики.
Сейчас так: code_22447.txt
Хотелось чтоб можно было так:code_22448.txt
Изменил процедуры так: code_22449.txt работает, но правильно ли так? Или возможно это сделать по другому?

карма: 10

0
файлы: 3code_22447.txt [1.5KB] [431], code_22448.txt [1.5KB] [440], code_22449.txt [763B] [323]
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26061
Рейтинг: 2120
#2: 2011-02-06 00:15:07 ЛС | профиль | цитата
sla8a писал(а):
но правильно ли так?

Функуция, которую ты убрал -- ImgGetDC(), получает контекст будущего вывода графики, на что потом и будет выведен текст. Интересно, а в твоем коде на каком pDC ты получаешь размеры текста
------------ Дoбавленo в 00.15:
Попробуй протестировать вот так, если пойдет нормально, то исправлю



procedure THIImg_Text._var_TextWidth;
var SizeFont: TSize;
DC: HDC;
s: string;
begin
s := ReadString(_Data,_data_Text,_prop_Text);
DC := CreateCompatibleDC( 0 );
SelectObject(DC, GFont.Handle);
GetTextExtentPoint32( DC, PChar(s), Length(s), SizeFont);
DeleteDC(DC);
dtInteger(_Data, SizeFont.cx);
end;

procedure THIImg_Text._var_TextHeight;
var SizeFont: TSize;
DC: HDC;
s: string;
begin
s := ReadString(_Data,_data_Text,_prop_Text);
DC := CreateCompatibleDC( 0 );
SelectObject(DC, GFont.Handle);
GetTextExtentPoint32( DC, PChar(s), Length(s), SizeFont);
DeleteDC(DC);
dtInteger(_Data, SizeFont.cy);
end;
карма: 22

1
Голосовали:sla8a
Ответов: 2193
Рейтинг: 673
#3: 2011-02-06 00:20:32 ЛС | профиль | цитата
nesco, pDC я заменил на GetDC(0), что если я правильно понял равно Handle = 0. Получается вроде вот этого: code_22451.txt.

Твой код работает.
карма: 10

0
файлы: 1code_22451.txt [456B] [441]
Разработчик
Ответов: 26061
Рейтинг: 2120
#4: 2011-02-06 00:52:48 ЛС | профиль | цитата
sla8a писал(а):
pDC я заменил на GetDC(0)

Да, есть такое, но телодвижения с пересохранением шрифта, в случае получения совместимого контекста функцией CreateCompatibleDC(), совсем не нужно, в отличии от получения прямого контекста функцией GetDC()
------------ Дoбавленo в 00.52:
Исправил
карма: 22

0
Ответов: 2193
Рейтинг: 673
#5: 2011-02-06 01:00:18 ЛС | профиль | цитата
Может в Edit добавить TextWidth, может пригодиться кому? Примерно вот для такого: code_22452.txt
Да и в Label тоже не помешало.
карма: 10

0
файлы: 1code_22452.txt [1KB] [440]
Разработчик
Ответов: 26061
Рейтинг: 2120
#6: 2011-02-06 01:07:22 ЛС | профиль | цитата
Не стоит засорять лишними методами Edit и Label, для получения TextWidth вполне хватит и Img_Text, что и показано в твоем примере
карма: 22

0
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)