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

Вниз

Поворот текста из нескольких строк в TPicture...   Найти похожие ветки 

 
Slym   (2003-03-11 19:48) [0]

Требуется нарисовать строку со стилем WordWrap (разбиение на строки если не входит) повернутую на 90 градусов...
Сей код не рисует! Помогите мастаки...

var
LogFont:TLogFont;
Pic:TPicture;
R:TRect;
begin
GetObject(Self.Font.Handle,SizeOf(TLogFont),@LogFont);
LogFont.lfEscapement:=900;
pic:=TPicture.Create;
pic.Bitmap.Canvas.Font.Handle:=CreateFontIndirect(LogFont);

r:=pic.Bitmap.Canvas.ClipRect;
DrawText(pic.Bitmap.Canvas.Handle,PChar(str),-1,R,DT_CENTER or DT_WORDBREAK or DT_CALCRECT);
pic.Bitmap.Height:=r.Right;
pic.Bitmap.width:=r.Bottom;
DrawText(pic.Bitmap.Canvas.Handle,PChar(str),-1,R,DT_TOP or DT_CENTER or DT_WORDBREAK);
// далее с картинкой работаю по назначению
pic.Free;
end;


 
Slym   (2003-03-12 11:31) [1]

Ну никто не знает? Неверю!


 
Cobalt   (2003-03-12 12:36) [2]

В каком смысле "не рисует"?
Может, надо работать с объектом TImage, который размещен на форме, а не убивается сразу после отрисовки?


 
REA   (2003-03-12 12:45) [3]

pic.Bitmap.Canvas.ClipRect; - а он не пустой?
Хотя наверно не важно.
Что на выходе первого draw? Не исключено что DT_CENTER и DT_WORDBREAK не дружат.
А горизонтально все работает?
Не исключено, что после изменения размеров image пропадает font, выбранный для него, поскольку Delphi его может не запомнить.
Вобщем вопросов больше чем ответов...


 
Slym   (2003-03-12 13:55) [4]

Горизонтально работает...
Вертикально "тоже" (никаких ош. не выдает... WinAPI (DrawText) говорит "Все ОК"), но белая канва на выходе... или обрывок текста посредь канвы (повернутый)...

begin
GetObject(Self.Font.Handle,SizeOf(TLogFont),@LogFont);
LogFont.lfEscapement:=900;
pic:=TPicture.Create;//TPicture никакой не Image.
pic.Bitmap.Canvas.Font.Handle:=CreateFontIndirect(LogFont);

r:=pic.Bitmap.Canvas.ClipRect;//не обращайте внимания... нужен просто ненулевой рект, без нее след строка сработает неправильно
DrawText(pic.Bitmap.Canvas.Handle,PChar(str),-1,R,DT_CENTER or DT_WORDBREAK or DT_CALCRECT);//Вычисляет размер ректа для отрисовки, и без центровки тоже не работает...
//Вычисляет правильно!!!
pic.Bitmap.Height:=r.Right;
pic.Bitmap.width:=r.Bottom;
Изменяем размер картинки согласно вычисленным размерам
DrawText(pic.Bitmap.Canvas.Handle,PChar(str),-1,R,DT_CENTER or DT_WORDBREAK);
// далее с картинкой работаю по назначению
//т.е. рисую ее где надо и где ненадо
pic.Free;//картинка больше ненужна
end;


 
REA   (2003-03-12 14:39) [5]

Все же я бы попробовал установить pic.Bitmap.Canvas.Font.Handle во второй раз на всякий случай...
По идее ничего больше не должно мешать...



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

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

Наверх




Память: 0.45 MB
Время: 0.007 c
14-76604
Kolesya
2003-03-07 12:59
2003.03.24
Кто пользуется INDY. Кому нетрудно бросте примерчик, плиз


4-76714
neodiX
2003-01-28 12:11
2003.03.24
Почему не обрабатываются сообщения мыши?


3-76260
Воробъянинов
2003-03-04 09:13
2003.03.24
Кодировка в ADO...


3-76293
V-A-V
2003-03-03 07:14
2003.03.24
Сжать базу


7-76679
Arkady
2003-01-28 16:56
2003.03.24
Пароль





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский