Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Некорректная работа DrawTextEx, (определение размеров текста) 
:(
    Опции темы
Alix
Дата 4.5.2005, 18:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вывожу текст в ListBox'e со стилем lbOwnerDrawVariable. В таком случае при отрисовке возникает два события: определение высоты элементов и собственно отрисовка...
Я храню в листбоксе многострочный текст. Нужно выводить его в прямоугольнике с переносом по словам, чтобы были и переносы строк и если не влезает в ширину, то строки переносятся... Все получается, только в некоторых случаях определение размера происходит неверно.
Такое бывает тогда, когда последняя строка очень небольшая в ширину, например, как на картинке (http://zavalenka.narod.ru/bugs.PNG на сам сайт не ходите smile).
Определение размеров происходит так:
Код
 DrawTextEx(listbox1.canvas.Handle,
                              PAnsiChar(<string here>), <length of string>,
                              rect, DT_CALCRECT    or DT_WORDBREAK or DT_NOCLIP
                              or DT_Left, nil));
//rect - это прямоугольник с нужной мне шириной.
//ф-я возвращает нужную высоту

Как можно обойти эту проблему?

  Вверх
Alix
Дата 4.5.2005, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 1
Всего: 23



Решил вставить картинку, чтобы не пришлось переходить по ссылке...
--Resize_Images_Alt_Text--



--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
Alix
Дата 5.5.2005, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 1
Всего: 23



Все... можете закрывать тему... Я разобрался smile))) 

appended: 29.10.2008
Почему-то не описал в чем проблема, а вдруг кому пригодится. А проблема была в том, что DT_CALCRECT не может сделать высоту прямоугольника выше 255 пикселей. И если больше, то там происходило или переполнение, или высота оставалась 255.

Это сообщение отредактировал(а) Alix - 29.10.2008, 16:09


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
In0stRAnez
  Дата 2.12.2010, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



Код

procedure TForm1.Button1Click(Sender: TObject);
var s:string;
arect : Trect;
begin
arect := Rect(123,1,2,123)   ;
 s := 'Hello world! Hello world! Hello world! Hello world!';
 DrawText(ListBox1.Canvas.Handle,PChar(s),length(s),aRect,DT_WORDBREAK);
end;



нифига не пашет

как быть?  что не правильно делаю?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.1004 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.