Вставка надписи в картинку. Работает, но ...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
v000v
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 23.04.2005 (Сб) 19:06

Вставка надписи в картинку. Работает, но ...

Сообщение v000v » 11.05.2005 (Ср) 10:22

Всем, здрасти!

Проблема:

При ресайзе текста (Font+), текст отображается не плавными кривыми, а отдельными кубиками.
Если долго нажимать :) Font+ (до значения 242), все становится красиво.
После этого, уменьшение размера текста не влияет на его вид. Красота вечна?!

Кто-нибудь может сие пояснить?



Спасибо за любые коментарии к программе.
Вложения
PrintTextOnPicture.rar
Вставка надписи в картинку
Программа в rar-архиве, разм. 172к (с картинкой)
(172.83 Кб) Скачиваний: 34

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 11.05.2005 (Ср) 12:02

Поставь другой шрифт.
И текст вставляеться, но видно только кусочек одной буквы. При увиличении размера шрифта и этот кусочек пропадает :(

Удачи
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

v000v
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 23.04.2005 (Сб) 19:06

Сообщение v000v » 11.05.2005 (Ср) 13:56

Igor_123
Поставь другой шрифт.

Да, например Arial не страдает от подобного эффекта.

И текст вставляеться, но видно только кусочек одной буквы

Не совсем понял о чем речь... У меня все нормально работает. Перед нажатием на "Insert text", задаем предположительный размер надписи. В хэлпе написано...[/b]

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 11.05.2005 (Ср) 14:57

А просто шрифты разные бывают (точно названия не скажу). Вот от этого и эффект такой.
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 11.05.2005 (Ср) 15:37

v000v писал(а):В хэлпе написано...

Обижаешь!!! :D
Не барское это дело хелп читать :D
Чесно говоря, я думал кнопка не задействована и для дальнейшего расширения функциональности сделанна.
А шрифт я поставил - Bookman Old Style.
При увеличении в 200, нормально показывает.

А я после запуска кликаю по рисунку, кликаю второй раз и ошибка.
После этого кликаю один раз и нажимаю "Вставить текст" ну и маленький прямоугольничек появляеться, в который нужно передать фокус для ввода текста. Ну и естественно получаеться результат:
я писал(а):И текст вставляеться, но видно только кусочек одной буквы
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 11.05.2005 (Ср) 15:49

Да вот здесь хотел показать.
Ты пишешь так:
Код: Выделить всё
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Integer
    If fflag = 0 Then GoTo lolo Else GoTo eoeo
lolo:
        ff = 10
        For i = 0 To Text1.UBound
            Text1(i).FontSize = ff
        Next i
        ff = ff + 2
         fflag = 1
          Exit Sub
eoeo:
            For i = 0 To Text1.UBound
                Text1(i).FontSize = ff
                 Command1.Caption = ff
            Next i
                ff = ff + 2
End Sub

я бы написал так:
Код: Выделить всё
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Long
If fflag = 0 Then
    ff = 10
    For i = 0 To Text1.UBound
        Text1(i).FontSize = ff
    Next i
    ff = ff + 2
    fflag = 1
Else
    For i = 0 To Text1.UBound
        Text1(i).FontSize = ff
        Command1.Caption = ff
    Next i
    ff = ff + 2
End If
End Sub

Ты уходишь от GOTO и код становиться более читаемый. Блок If Else End If отделяет логические действия, и проще в понимании. Но я не настаиваю. Ты автор тебе и валенки носить :D
Удачи!
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 11.05.2005 (Ср) 16:02

Igor_123 писал(а):Чесно говоря, я думал кнопка не задействована и для дальнейшего расширения функциональности сделанна.


Думать ВРЕДНО ©kirrun. Надо сомтреть сорс...
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 11.05.2005 (Ср) 16:13

Да сорц больно запущеный! Тут и подумать не вредно :D
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 11.05.2005 (Ср) 16:19

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

v000v
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 23.04.2005 (Сб) 19:06

Сообщение v000v » 11.05.2005 (Ср) 16:28

Igor_123

Да вот здесь хотел показать.


Если метки имеют смысловую нагрузку, мой вариант читабельнее.

Мне так ка-а-атса! (А.Райкин)

v000v
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 23.04.2005 (Сб) 19:06

Сообщение v000v » 11.05.2005 (Ср) 16:32

Konst_One

нажми НELP, пожалуйста!

p.s. зачем я его туда добавлял? :roll:

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 11.05.2005 (Ср) 16:51

Код: Выделить всё
Private Sub picResizer_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
' If Index <> 0 Then GoTo fofo Else GoTo dodo
'fofo:
'    'resize
'    If bDrag Then
'        cx_r = cx_r + X - dx_r: cy_r = cy_r + Y - dy_r
'        If cx_r < 0 Or cy_r < 0 Then Exit Sub
'
'        Text1(indText).Width = cx_r: Text1(indText).Height = cy_r
'SetResizeRecPos
'
'    End If
'Exit Sub
'dodo:
''move
'    If bDrag Then
'        cx_m = cx_m + X - dx_m: cy_m = cy_m + Y - dy_m
'        Text1(indText).Move cx_m, cy_m
'    End If
'SetResizeRecPos

If Index <> 0 Then 'resize
    If bDrag Then
        cx_r = cx_r + X - dx_r
        cy_r = cy_r + Y - dy_r
        'Если вышли за пределы, здесь больше делать нечего
        If cx_r < 0 Or cy_r < 0 Then Exit Sub
       
        Text1(indText).Width = cx_r
        Text1(indText).Height = cy_r
        SetResizeRecPos
    End If
Else 'move
    If bDrag Then
        cx_m = cx_m + X - dx_m
        cy_m = cy_m + Y - dy_m
        Text1(indText).Move cx_m, cy_m
    End If
    SetResizeRecPos
End If
End Sub

Вот переделанная процедура. От себя добавил только коментарий на русском. Твой вариант закоментирован.
v000v писал(а):Мне так ка-а-атса! (с)(А.Райкин)

Дело привычки. :wink:

v000v писал(а):p.s. зачем я его туда добавлял?

Как зачем? Что-бы отвечать на вопросы пользователей.
:D :D :D
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 11.05.2005 (Ср) 17:05

вот немного добавил с ресайзом без всякого клика
Вложения
PrintTextOnPicture.zip
(174.38 Кб) Скачиваний: 24

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 11.05.2005 (Ср) 18:04

Igor_123 писал(а):Да сорц больно запущеный! Тут и подумать не вредно :D


но тем не менее, событие клик по кнопке там можно увидет => оно не для красоты.
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

v000v
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 23.04.2005 (Сб) 19:06

Сообщение v000v » 11.05.2005 (Ср) 19:17

Konst_One

вот немного добавил с ресайзом без всякого клика


Хорошо!
Но для Move_Text двойной клик прийдется оставить. Вообще старался следовать привычному шаблону. Плюс в том, что когда на картинке много надписей, "волшебные" превращения :) курсора утомляют.

p.s. Однако вопрос об отображении шрифта MS Sans Serif остается открытым.

Не в буквах ли "MS" :wink: тут дело?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 11.05.2005 (Ср) 19:51

это не TTF и не OpenType, наверное в этом и причина

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

Сообщение tyomitch » 11.05.2005 (Ср) 20:58

v000v писал(а):p.s. Однако вопрос об отображении шрифта MS Sans Serif остается открытым.

Не в буквах ли "MS" :wink: тут дело?

А ты никогда не обращал внимания, что в диалогах выбора шрифтов рядом с некоторыми стоят значки "TT" и "O"? А рядом с MS Sans Serif ничего не стоит. Оттуда и "кубики".
Изображение

v000v
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 23.04.2005 (Сб) 19:06

Сообщение v000v » 11.05.2005 (Ср) 21:28

tyomitch
Оттуда и "кубики".

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

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

Сообщение tyomitch » 11.05.2005 (Ср) 23:34

А ты замени строку "Command1.Caption = ff" на "Command1.Caption = ff & Text1(i).FontName", и сразу же поймёшь.
Изображение

v000v
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 23.04.2005 (Сб) 19:06

Сообщение v000v » 12.05.2005 (Чт) 8:18

tyomitch

...понял.

И считаю, что это уже ну вааще ни в какие рамки....

Ладно, всем спасибо!
Удачи!


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

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

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

    TopList