О тексте в пикчур боксе

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

О тексте в пикчур боксе

Сообщение Kiryusha » 01.12.2005 (Чт) 14:06

Народ, подскажите, плз. Как определить ширину буквы?
Я вывожу посимвольно текст в пикчурбокс, поэтому мне необходимо определить ширину каждой предыдущей буквы?
Пробовал св-во TextWidth, может я ее неправильно использовал, но на некоторые буквы перекрывают друг друга, ди расстояние м-ду ними не везде одинаковое.
Заранее, спс.
8)
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.12.2005 (Чт) 16:00

Видимо, неправильно использовал. Потому что тебе нужна именно она.
Изображение

Arcanoid
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 01.01.2005 (Сб) 15:44

Сообщение Arcanoid » 01.12.2005 (Чт) 23:14

Может забыл перед TextWidth прописать "ПикчуБокс ." :?:
Invalid user or password...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 02.12.2005 (Пт) 9:52

А обязательно посимвольно?
Лучший способ понять что-то самому — объяснить это другому.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.12.2005 (Пт) 9:55

Слово "text" посимвольно и строкой целиком может иметь разную TextWidth. Особенно это справедливо для курсива и декоративных фонтов.
Lasciate ogni speranza, voi ch'entrate.

Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

Сообщение Kiryusha » 02.12.2005 (Пт) 9:58

А обязательно посимвольно?

обязательно
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

Сообщение Kiryusha » 02.12.2005 (Пт) 10:02

вобщем когда я определяю ширинут так:
Код: Выделить всё
a=pctChat.TextWidth(mid("хыыыы",i,1))
TextOut pctChat.hDC, x, y, mid("хыыыы",i,1), 1


и он быквы "х" и "ы" слепляет вместе, а остальные печатает намана
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

Arcanoid
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 01.01.2005 (Сб) 15:44

Сообщение Arcanoid » 02.12.2005 (Пт) 23:27

Исходя из утверждения:
alibek писал(а):Слово "text" посимвольно и строкой целиком может иметь разную TextWidth. Особенно это справедливо для курсива и декоративных фонтов.

понятно почему так может происходить.

:idea: Можно попробовать к смещению X (я так понимаю, это оно и есть(?)) прибавить пару пикселей чтобы буквы гарантированно никогда не слеплялиь.
Invalid user or password...

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Сообщение pronto » 04.12.2005 (Вс) 6:55

В свойствах PictureBox установи нужный Фонт.
В любом месте помести тот текст, который нужно выводить посимвольно (только не забудь его).
Еще нужен таймер с интервалом ~150 мс.
В процедуру нажатия кнопки добавляй вот такой код:

Код: Выделить всё
Private Sub Command1_Click()
   'первоначально, свойство .Enabled = False
   Timer1.Enabled = Not Timer1.Enabled
   AnimText = Text1.Text 'тут нужный текст
   AnimLen = Len(AnimText) 'его длина в символах (тип - Long)
End Sub


А в процедуре таймера пишешь следующее:

Код: Выделить всё
Private Sub Timer1_Timer()
   Dim buff As String
   
   Picture1.Picture = Nothing 'очищаем картинку
   
   If ToEnd > AnimLen Then ToEnd = 1
   buff = Mid$(AnimText, 1, ToEnd)
   
   Picture1.CurrentX = 10 'тут могут быть любые числа.
   Picture1.CurrentY = 10 'в зависимости от желания.
   Picture1.Print buff
   
   ToEnd = ToEnd + 1
End Sub


Все! И никаких тебе переподвыподвертов! Дерзай!!!

Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

Сообщение Kiryusha » 04.12.2005 (Вс) 17:27

ппц.
Кароче х.. с тем что слипаются, терь другая проблем есть.

Кароче делаю комбу со всеми шрифтами, и рич текст бокс, ну делаю, что при смене шрифта в комбе сразу же менялся текст в текстбоксе, все гуд, только потом из ричтекстбокса в пикчурбокс этот текст копируется какими-то иероглифами. Почему?
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Сообщение pronto » 05.12.2005 (Пн) 12:31

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

Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

Сообщение Kiryusha » 06.12.2005 (Вт) 8:25

Просто гемора не было бы вообще, если бы в РичТекстБокс мона было бы картинки выводить, поэтому приходится мозги е***ь с пикчуром. Если все же как-то можно в РТБ вывести картинку, то киньте примерчик.
Последний раз редактировалось Kiryusha 06.12.2005 (Вт) 10:43, всего редактировалось 1 раз.
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 06.12.2005 (Вт) 10:37

Kiryusha

У тебя фильтр базара, что ли поломался?

Значит, если ты быстро уберешь все непечатные слова из постингов, то я даже тебя не забаню по подсетке.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 182

    TopList