Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить размер строки 
V
    Опции темы
v2v
Дата 22.8.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

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



hello уважаемые.


как бы мне решить вот такую вот задачку: 

есть строка состоящая из букв цифр и знаков препинания, есть название шрифта (Times..)и размер шрифта в пикселях (12).
также известно общее число знаков в строке.

как определить размер этой строки в пикселях?

Помоему существует зависимость между высотой букв (размер шрифта ) и их длинной : 3/4 если не ошибаюсь(нужно ваше уотчнение). Но этого недостаточно.......если в слове появляются знаки препинания - значение размера подсчитаного через такую зависимость сильно не совпадает . Не хотелось бы городить город сложными алгоритмами посдсчёта отдельного размера каждого символа: как бы так попроще: хелп.



Это сообщение отредактировал(а) v2v - 22.8.2008, 19:09


--------------------
PM   Вверх
Alexandr87
Дата 22.8.2008, 20:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



Есть реализации, типа Java`вской FontMetrics. Можешь ее глянуть, исходники вроде есть.

Это сообщение отредактировал(а) Alexandr87 - 22.8.2008, 20:56
PM Jabber   Вверх
aleksh
Дата 22.8.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



когда-то сталкивался с подобной задачей, в итоге пошел обходным путем (уже не помню каким, вспомню отпишу). проблема в том, что в киреллице есть такие буквы как "ю, ш, щ, ы" -- они очень сильно портят попытки подсчета, ибо шире остальных, да и вывод на экран (ведь для этого нужно длинну высчитать?) вносит свои коррективы, проще "зарезервировать место с запасом", иначе, как мне видется, городить город таки придется
PM MAIL   Вверх
maxim1000
Дата 23.8.2008, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



ну раз уж шрифт не моноширинный (если я правильно понял), то можно поскладывать ширину всех символом, возможно, добавив межбуквенное расстояние

а вообще, лучше бы указать, на какой платформе такая задача возникла, какие библиотеки доступны - тогда перенесу в соответствующий раздел, и, возможно, там ответят быстрее


--------------------
qqq
PM WWW   Вверх
Akina
Дата 23.8.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата

TextWidth Method

Returns the width of a text string as it would be printed in the current font of a Form, PictureBox, or Printer.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
DsKTY
Дата 24.8.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если нет нужды в 100% точности до пикселя, можно попробовать взять текст, по структуре подобный тому который используется в строке, подсчитать среднюю длину символа и потом просто умножать колл-во символов в строке на полученную среднюю ширину.
PM MAIL   Вверх
ksili
Дата 24.8.2008, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

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



DsKTY, чтобы понять чему подобен по структуре имеющийся текст, надо его весь по буквам просмотреть. Ну а если так, то что нам мешает при этом посчитать точную длину?

Хотя может я вас не так понял?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
DsKTY
Дата 25.8.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну вот к примеру текст из вашей подписи, разбитый на 2 части: "Ничто так не развивает аналитическое мышление, как" и "отладка сложной программы без возможности пошагового выполнения (с)". Первая часть содержит 50 символов и имеет длину 313 пикселей. Вторая часть содержит 67 символов и имеет длину 418 пикселей. Т.е. средняя ширина букв для первой части будет 6.28px, для правой - 6.23. 
Если принять за коэффициент 6.28, то длина второй части получится 420px, если наоборот, то длина первой части будет 311.5px. Т.е как уже писал выше, способ годится, если нет нужды вычислять длину с 100% точностью, и допустима небольшая разбежка. 

Под "подобной структурой" я понимал, что текст по которому высчитывается коэффициент, не должен содержать слишком много коротких или длинных символов. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


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

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


 




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


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

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