Как вводить текст в окно picture в фиксированом месте?

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

Как вводить текст в окно picture в фиксированом месте?

Сообщение Topol » 17.04.2006 (Пн) 13:07

Нужно сделать следующее:
Комбинацию текста и рисунка, чтобы это все можно было сохранить как рисунок, а текст можно было менять.
Помогите пожалуйста!
Можт есть другие операторы, кроме picture1.print "dsds"?
Или к нему можно дописать пораметры положения курсора?
Заранее спасибо! :)

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

Сообщение alibek » 17.04.2006 (Пн) 13:10

CurrentX/CurrentY
Lasciate ogni speranza, voi ch'entrate.

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 17.04.2006 (Пн) 13:27

Понял, Спасибо!!!!
Все было очень просто :)
Последний раз редактировалось Topol 17.04.2006 (Пн) 13:36, всего редактировалось 1 раз.

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

Сообщение alibek » 17.04.2006 (Пн) 13:35

Picture.CurrentX = 200
Picture.CurrentY = 200
Picture.Print "Text"
Lasciate ogni speranza, voi ch'entrate.

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 17.04.2006 (Пн) 13:37

Спасибо!

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 15:13

Подскажите, пожалуйста!
Какой размер у надписи в точках?
нужно чтобы конец надписи не вылезал за определенный размер!
Как это можно сделать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2006 (Ср) 15:14

Ты определись что надо - знать размер в точках или чтобы не вылезало...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 15:20

Есть большое поле для рисунка и к центре него нарисован прямоугольник.
В него нужно уместить текст.
Причем нужно, чтобы середина строчки приходилась на середину высоты прямоугольника.
Picture.CurrentX и Picture.CurrentY задают левый верхний угол надписи.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2006 (Ср) 15:22

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 15:28

Спасибо, спасибо, спасибо!!!!!!!!!!!!!!
Впрочем я там ничего не понял :)

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 15:53

Скажите пожалуйста почему у меня эта фанкция (DrawText) не работает?
Может быть можно просто узнать как-то размер надписи в точках или пиксилях?!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 19.04.2006 (Ср) 15:57

Нет, знание размера в пикселях не поможет.

В том топике же был приведен код :roll:
Как именно не работает функция?

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 16:04

Просто я там ничего не понял и наверное что-то напутал :(
Очень нужно такую штуку написать, пусть даже несколько криво :)
Может есть какой-то боле-менее простой способ????

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2006 (Ср) 16:06

Ты не понял главного: там уже всё написано...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 16:17

На форме все работает, а как сделать так, чтобы эти "Гы!" писались в поле ПикчерБокс????
Что такое "Me.hdc" ???

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2006 (Ср) 16:27

Сравни наборы свойств формы и пикчербокса, сделай выводы...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 16:28

а зачем нужны DT_CENTER и DT_WORDBREAK
Можно ли где-то задать размер шрифта?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2006 (Ср) 16:30

Topol, скажи мне, у тебя с английским языком как?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 16:40

что означают эти слова я понимаю, но т.к. я не понимаю как работает функция, то и не могу понять, чт означит DT_CENTER OR DT_WORDBREAK :(
Я пробовал их менять - результат странный :cry:
в каком они формате заданы???

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2006 (Ср) 16:47

Они заданы в коде, ссылка на который приведена выше, больше они не заданы нигде...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 16:51

Ну пожалуйста!
Я правда не понимаю!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2006 (Ср) 16:56

Что именно? Давай по частям...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 17:23

Спасибо
Я не понимая на что влияют DT_CENTER и DT_WORDBREAK

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 19.04.2006 (Ср) 17:25

Ты не поверишь, но они влияют на то как отображается текст .Причем их влияние полностью соответсвует их переводу :)
Если всё делать своими ручками, они скоро отвалятся !

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 17:30

Спасибо!
Я дурак! :oops:
А можно еще спросить, можно ли отцентровать текст по высоте?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2006 (Ср) 17:34

Наверное, раз с английским языком проблем нет, можно посоветовать http://msdn.microsoft.com/library/defau ... t_0odw.asp
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 19.04.2006 (Ср) 17:39

Спасибо огромное!
То что нужно! :) :)

Topol
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 17.04.2006 (Пн) 12:39

Сообщение Topol » 25.04.2006 (Вт) 13:43

Подскажите пожалуйста!
Долго разбирался, так и не понял.
у функции ДровТекст, судя по документации, есть пораметр формата DT_VCENTER, который задает выравнивание по вертикали.
Но как его задать и как написать, чтобы выравнивалось?
Если можно, приведите, пожалуйста, пример вызова функции DT, чтобы выводимый текст был центрирован по вертикали!

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 25.04.2006 (Вт) 14:25

Это тот же флаг.

Код: Выделить всё
Call DrawText(picMain.hDc, strData, Len(strData), RC, DT_LEFT Or DT_VCENTER)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 25.04.2006 (Вт) 14:41

а вот тебе размер в точках
Код: Выделить всё
private Type Size
    cx As Long
    cy As Long
End Type

Private Declare Function GetTextExtentPoint Lib "gdi32" Alias "GetTextExtentPointA" (ByVal hdc As Long, ByVal lpszString As String, ByVal cbString As Long, lpSize As Size) As Long


Private sub Form_click()
    dim nSize as Size
    Call GetTextExtentPoint(form1.hdc, "O", Len("O"), nSize)
    msgbox nSize.x '- ширина
    msgbox nSize.y '- высота
end sub


След.

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

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

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 197

    TopList  
cron