Еще вопросик. Ширина текста (буквы)

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Еще вопросик. Ширина текста (буквы)

Сообщение Joo » 06.10.2008 (Пн) 17:43

Бьюсь, бьюсь, никак не выходит.
Как определить ширину текста(буквы)? Пробовал через API GetTextExtentPoint32, неверно определяет русские буквы.
Пробовал через DataGridViewCell.MeasureTextWidth, тоже неверно определяет.
Может кто сталкивался, как в .NET определить? Если можно примерчиком.
[Viper] :: Может все же начнешь свои сообщения предварительно через Word пропускать для проверки орфографии?
[Scarabey] :: Я не понял, где ты увидел ошибки?
[Viper] :: А вот за попытку имитации модераториала замечание будет однозначно!
Последний раз редактировалось Joo 08.10.2008 (Ср) 16:06, всего редактировалось 1 раз.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Еще вопросик. Ширена текста (буквы)

Сообщение Nord777 » 06.10.2008 (Пн) 21:39

Object browser писал(а):Public Function MeasureCharacterRanges(........) As System.Drawing.Region( )

Member of System.Drawing.Graphics
Определяет наиболее точно.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Еще вопросик. Ширена текста (буквы)

Сообщение Joo » 07.10.2008 (Вт) 6:08

Nord777 писал(а):
Object browser писал(а):Public Function MeasureCharacterRanges(........) As System.Drawing.Region( )

Member of System.Drawing.Graphics
Определяет наиболее точно.

Большое спасибо!
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Еще вопросик. Ширина текста (буквы)

Сообщение Joo » 07.10.2008 (Вт) 8:23

Короче я понял, у меня определяется ширена буквы вместе с отступами, а мне нужно как-то без них
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Еще вопросик. Ширина текста (буквы)

Сообщение Nord777 » 07.10.2008 (Вт) 17:34

Короче я понял, у меня определяется ширена буквы вместе с отступами, а мне нужно как-то без них
И где тут отступы?
Изображение

Код: Выделить всё
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim G As Graphics = e.Graphics
        Dim R As Region
        Dim SF As New System.Drawing.StringFormat()
        Dim S As String = "ШЦwW"
        Dim ChRange() = New CharacterRange() {New CharacterRange(0, S.Length)}

        SF.SetMeasurableCharacterRanges(ChRange)
        R = G.MeasureCharacterRanges(S, Me.Font, Me.ClientRectangle, SF)(0)

        G.DrawString(S, Me.Font, Brushes.Black, Me.ClientRectangle, SF)
        G.DrawRectangle(Pens.Blue, Rectangle.Truncate(R.GetBounds(G)))
    End Sub
Вложения
Snapshot.PNG
Snapshot.PNG (2 Кб) Просмотров: 5851
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Еще вопросик. Ширина текста (буквы)

Сообщение Joo » 08.10.2008 (Ср) 5:55

Когда начинаеш по получившимся координатам двигаться то, регулярно на 1,2 пикселя съежаеш. Вот. Как ты показал я в MSDN'е тоже прочитал, но я повторюсь если много буковок, начинаеш постепенно сдвигаться все дальше и дальше наезжая на букву. Я другой способ нашел. Тоже встроенными средствами )
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Еще вопросик. Ширина текста (буквы)

Сообщение Денис » 08.10.2008 (Ср) 8:58

Розенталь писал(а):Когда начинаешь по получившимся координатам двигаться то, регулярно на 1-2 пикселя съезжаешь. Вот. Как ты показал, я в MSDN'е тоже прочитал, но я повторюсь, если много буковок, начинаешь постепенно сдвигаться все дальше и дальше наезжая на букву. Я другой способ нашел. Тоже встроенными средствами )
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Еще вопросик. Ширина текста (буквы)

Сообщение Viper » 08.10.2008 (Ср) 13:06

Денис, что это было? Какой смысл в ответе полностью состоящем из цитаты?
Весь мир матрица, а мы в нем потоки байтов!

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Еще вопросик. Ширина текста (буквы)

Сообщение Joo » 08.10.2008 (Ср) 16:08

Scarabey писал(а):Бьюсь, бьюсь, никак не выходит.
Как определить ширину текста(буквы)? Пробовал через API GetTextExtentPoint32, неверно определяет русские буквы.
Пробовал через DataGridViewCell.MeasureTextWidth, тоже неверно определяет.
Может кто сталкивался, как в .NET определить? Если можно примерчиком.
[Viper] :: Может все же начнешь свои сообщения предварительно через Word пропускать для проверки орфографии?
Ну, проверил вордом, кроме как на "примерчиком" не ругнулся, да еще на пару запятых не доставленных.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Еще вопросик. Ширина текста (буквы)

Сообщение Williams » 08.10.2008 (Ср) 16:10

Scarabey писал(а):
Scarabey писал(а):Бьюсь, бьюсь, никак не выходит.
Как определить ширину текста(буквы)? Пробовал через API GetTextExtentPoint32, неверно определяет русские буквы.
Пробовал через DataGridViewCell.MeasureTextWidth, тоже неверно определяет.
Может кто сталкивался, как в .NET определить? Если можно примерчиком.
[Viper] :: Может все же начнешь свои сообщения предварительно через Word пропускать для проверки орфографии?

Ну, проверил вордом, кроме как на "примерчиком" не ругнулся, да еще на пару запятых не доставленных.


А ты проверял после или до модерации? )
И вы думаете, что вас оставят в живых после прочтения этого поста?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Еще вопросик. Ширина текста (буквы)

Сообщение Viper » 08.10.2008 (Ср) 16:25

Scarabey писал(а):
Scarabey писал(а):Бьюсь, бьюсь, никак не выходит.
Как определить ширину текста(буквы)? Пробовал через API GetTextExtentPoint32, неверно определяет русские буквы.
Пробовал через DataGridViewCell.MeasureTextWidth, тоже неверно определяет.
Может кто сталкивался, как в .NET определить? Если можно примерчиком.
[Viper] :: Может все же начнешь свои сообщения предварительно через Word пропускать для проверки орфографии?
Ну, проверил вордом, кроме как на "примерчиком" не ругнулся, да еще на пару запятых не доставленных.
Еще бы Word ругался на отредактированный текст. :mrgreen: Места с ошибками частично были выделены жирным.
Весь мир матрица, а мы в нем потоки байтов!

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Еще вопросик. Ширина текста (буквы)

Сообщение Joo » 09.10.2008 (Чт) 9:17

Еще бы Word ругался на отредактированный текст. :mrgreen: Места с ошибками частично были выделены жирным.

Тогда тебе замечание! Если делаешь замечание по тексту, то не нужно его исправлять! Выделять, выделяй, но не исправляй.[Viper] :: Эдак ведь можно и замечание за обсуждение модераториала заработать! Закрываю тему.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог


Вернуться в Visual Basic .NET

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

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

    TopList