Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Полосы прокрутки / 24 сообщений из 24, страница 1 из 1
09.06.2012, 07:54
    #37832157
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Здравствуйте, подскажите в чем моя ошибка? Необходимо чтобы картинка прокручивалась в Picturebox. выходит не то что надо.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Private Sub HScroll1_Change()
Picture1.Left = -HScroll1.Value * 100
End Sub

Private Sub HScroll1_Scroll()
  HScroll1_Change
End Sub

Private Sub Picture1_Click()
VScroll1.Max = (Picture.Height - Picture1.ScaleHeight) / 100
HScroll1.Max = (Picture.Width - Picture1.ScaleWidth) / 100
End Sub

Private Sub VScroll1_Change()
  Picture1.Top = -VScroll1.Value * 100
End Sub

Private Sub VScroll1_Scroll()
  VScroll1_Change
End Sub


Private Sub Открыть_Click()
CommonDialog1.ShowOpen
Set Picture1.Picture = LoadPicture(CommonDialog1.FileName)
End Sub

Private Sub Очистить_Click()
Picture1.Picture = LoadPicture
End Sub
...
Рейтинг: 0 / 0
09.06.2012, 09:25
    #37832236
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
klopa-aв чем моя ошибка?
1) Не используется оформление кода, не читала правила форума и FAQ
2) Не выложена сама форма. То есть мы все должны сейчас воссоздать эту форму у себя, чтобы потестировать код
3) Не описано толком, что, собственно, выходит, и что надо чтобы выходило

ЗЫ: Картинка ВНУТРИ пикчербокса прокручиваться не будет. Можно двигать сам пикчербокс, что, собственно, и делает этот код.
...
Рейтинг: 0 / 0
09.06.2012, 09:30
    #37832241
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
В общем, проблем с кодом не вижу - код двигает картинку во все стороны.
...
Рейтинг: 0 / 0
09.06.2012, 11:07
    #37832393
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Shocker.Pro да вы правы у меня прокручивается сам Picturebox, а не картинка. Подскажите чем воспользоваться что бы исправить эту проблему. Форму я вложила. Пошла читать правила от и до.
...
Рейтинг: 0 / 0
09.06.2012, 11:15
    #37832403
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
klopa-aчем воспользоваться что бы исправить эту проблемуЕще раз - ПРОБЛЕМА не изложена. ЧТО ТРЕБУЕТСЯ непонятно. Код выполняет то, что должен выполнять - двигает пикчербокс, а что надо?
...
Рейтинг: 0 / 0
09.06.2012, 11:16
    #37832406
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Если надо, чтобы картинка двигалась внутри пикчербокса, нужно просто вложить один пикчербокс в другой.
...
Рейтинг: 0 / 0
09.06.2012, 11:39
    #37832455
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Shocker.ProЕсли надо, чтобы картинка двигалась внутри пикчербокса, нужно просто вложить один пикчербокс в другой.
Да это мне и нужно. Я сделала как вы посоветовали добавила Picturebox в Picturebox, и все вышло. Вот только он прокручивает только часть картинки. Увеличить не могу, что увидеть всю куртинку. Проект вложила.
...
Рейтинг: 0 / 0
09.06.2012, 11:45
    #37832462
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
klopa-aПроект вложила.отлично, а форму к нему можно? ))
...
Рейтинг: 0 / 0
09.06.2012, 11:51
    #37832467
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Shocker.Proklopa-aПроект вложила.отлично, а форму к нему можно? ))
Век живи, век учись. Извините.

Private Sub Form_Load()
CommonDialog1.Filter = "Pictures(*.bmp,*.jpg,*.gif )|*.bmp;*.jpg;*.gif "

End Sub

Private Sub HScroll1_Change()
Picture2.Left = -HScroll1.Value * 100
End Sub

Private Sub HScroll1_Scroll()
HScroll1_Change
End Sub

Private Sub Picture1_Click()
VScroll1.Max = (Picture1.Height - Picture2.ScaleHeight) / 100
HScroll1.Max = (Picture1.Width - Picture2.ScaleWidth) / 100
End Sub

Private Sub VScroll1_Change()
Picture2.Top = -VScroll1.Value * 100
End Sub

Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub


Private Sub Выйти_Click()
End
End Sub

Private Sub Открыть_Click()
CommonDialog1.ShowOpen
Set Picture2.Picture = LoadPicture(CommonDialog1.FileName)
End Sub

Private Sub Очистить_Click()
Picture2.Picture = LoadPicture
End Sub
...
Рейтинг: 0 / 0
09.06.2012, 11:53
    #37832471
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Не оформила, сейчас исправлю.
...
Рейтинг: 0 / 0
09.06.2012, 11:53
    #37832472
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Так, опять тегами код не оформляем?

Это не форма, это код формы. Нужен файл формы, где все эти линейки прокрутки и т.п. Файлы имеют расширение frm (и frx иногда). Обычно их сохраняют туда же, куда и проект.
...
Рейтинг: 0 / 0
09.06.2012, 11:58
    #37832477
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Shocker.ProТак, опять тегами код не оформляем?

Это не форма, это код формы. Нужен файл формы, где все эти линейки прокрутки и т.п. Файлы имеют расширение frm (и frx иногда). Обычно их сохраняют туда же, куда и проект.

Исправлюсь даю слово!
...
Рейтинг: 0 / 0
09.06.2012, 11:59
    #37832478
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
не исправилась:
Shocker.ProФайлы имеют расширение frm (и frx иногда)
klopa-aК сообщению приложен файл (Form2.log
...
Рейтинг: 0 / 0
09.06.2012, 12:03
    #37832483
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Вот теперь все десять раз проверила.
...
Рейтинг: 0 / 0
09.06.2012, 12:12
    #37832492
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
klopa-aВот теперь все десять раз проверила.опять косяк ))
у тебя форма лежит в более верхней папке, чем сам проект, а в архиве она лежит в той же папке. Ну ладно, хоть есть форма.

Поставь свойство AutoSize внутреннего пикчербокса в True
...
Рейтинг: 0 / 0
09.06.2012, 12:19
    #37832504
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Shocker.Proklopa-aВот теперь все десять раз проверила.опять косяк ))
у тебя форма лежит в более верхней папке, чем сам проект, а в архиве она лежит в той же папке. Ну ладно, хоть есть форма.

Поставь свойство AutoSize внутреннего пикчербокса в True

Спасибо большое. Ты Человек с большой буквы.
...
Рейтинг: 0 / 0
10.06.2012, 12:36
    #37833604
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Картинка прокручивается нормально, но я не знаю как убрать лишний диапазон. Объясню не много подробнее. После того как картинка загрузилась в Picturebox прокручиваю ее вниз и вправо там лишний диапазон. Как это исправить? Посмотрела в свойствах Picturebox ни чего не нашла.
...
Рейтинг: 0 / 0
10.06.2012, 16:45
    #37833749
Below0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
klopa-a, значение max твоей полосы прокрутки должно зависеть от высоты загружаемой картинки. если будут округления при подсчётах - делай их в большую сторону
...
Рейтинг: 0 / 0
10.06.2012, 16:51
    #37833753
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Там есть еще серьезная проблема, которую белов не заметил. Но у меня сначала вопрос, что хочется. четко разобраться, как это работает, почему глючит и самой сделать правильно? Или получить исправленное, нормально работающее решение?
...
Рейтинг: 0 / 0
10.06.2012, 17:02
    #37833757
Below0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Shocker.ProТам есть еще серьезная проблема, которую белов не заметил я проект не скачивал и не видел) перевал за максимальное значение, да? и я больше не белов. полтора года программирования убиты одним модераторским логом. вырасту озлобленым, сопьюсь и начну курить...
klopa-a, воть статья из лучшей обучалке vb6 для чайнигоф
ScrollBar.

Если ты обратил внимание, почти любая программа под Windows имеет такие ползунки, позволяющие пользователю перемешаться по данным вверх-вниз или влево-вправо. Есть они и у нас. Называется этот объект ScrollBar. Сам объект получает имя по умолчанию HScroll1, если это вертикальный ползунок, или VScroll1, если - горизонтальный. Свойства и события у обоих одинаковые, поэтому, чтобы не раздувать код, используем один СкроллБар - вертикальный. Я использую в основном его.

Итак, основные рабочие свойства ScrollBar это:

.Value - это главное значение, оно меняется, когда мы двигаем ползунок ScrollBar' а.

.Max - задает максимальное значение, до какого будет менятся значение .Value. Главный недостаток этого объекта в том, что значение .Max, а стало быть и .Value не моджет превышать 32767. Это всегда надо учитывать при работе с этим объектом.

.Min - задает минимальное значение .Value. Здесь тоже ограничения до -32768.

.SmallChange - задает, насколько меняется .Value, если мы кликаем мышью по стрелочкам вверху или внизу объекта ScrollBar

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

Чтобы реально посмотреть, как работает этот объект, создадим новый проект и положим на форму Text1 и VScroll1. Затем дважды щелкнем мышью по объекту VScroll1. У нас откроется окно кода и создастся процедура VScroll1_Change().

Впишем в нее такую строчку кода: Text1.Text = VScroll1.Value и запустим программу. Как только мы начинаем двигать ползунок, в текстовом поле отражается значение VScroll1.Value от 0 до 32767 (поскольку мы ничего не задали иначе.

Остановим программу и создадим процедуру Form_Load(), выбрав в верхнем левом окне кода значение Form и щелкнув по нему. Впишем в эту процедуру значения свойств, о которых мы только-что говорили. Должно получиться следующее:

Option Explicit

Private Sub Form_Load()
VScroll1.Value = 0
VScroll1.Max = 32767
VScroll1.Min = -32768
VScroll1.LargeChange = 100
VScroll1.SmallChange = 1
End Sub

Private Sub VScroll1_Change()
Text1.Text = VScroll1.Value

End Sub

А чтобы ползунок не мигал так противно, поставим в окне свойств VScroll1 свойство TabStop в значение False. Запустим программу. Значение .Value мы задали 0, а поскольку интервал у нас от 32767 до -32768, то ползунок стоит посредине. При щелканьи мыши по стелочкам вверху и внизу, значение .Value изменяется на 1, а при щелканьи по полю VScroll1 - на 100.
...
Рейтинг: 0 / 0
10.06.2012, 19:43
    #37833823
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Shocker.ProТам есть еще серьезная проблема, которую белов не заметил. Но у меня сначала вопрос, что хочется. четко разобраться, как это работает, почему глючит и самой сделать правильно? Или получить исправленное, нормально работающее решение?

Да, хочу разобраться. Иначе толку то. Ну, если уж по честному хочется узнать подсказку, в какую сторону мне двигаться (вот такая вот я). Не скажешь если при загрузке неизвестны размеры картинки, но хочется чтобы при прокрутке, Picturebox показывал только ее и не чего лишнего, это вообще реально?
...
Рейтинг: 0 / 0
10.06.2012, 20:07
    #37833831
Below0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
klopa-aв какую сторону мне двигаться (вот такая вот я) покажи

klopa-aесли при загрузке неизвестны размеры картинки так определи их. подсказка - сплошной серый цвет на пикчебоксе - конец картинки

Модератор: Вложение удалено.
...
Рейтинг: 0 / 0
10.06.2012, 20:10
    #37833835
klopa-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Below0klopa-aв какую сторону мне двигаться (вот такая вот я) покажи

klopa-aесли при загрузке неизвестны размеры картинки так определи их. подсказка - сплошной серый цвет на пикчебоксе - конец картинки

Спасибо буду думать. Отпишусь.
...
Рейтинг: 0 / 0
10.06.2012, 21:44
    #37833889
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полосы прокрутки
Below0так определи их. подсказка - сплошной серый цвет на пикчебоксе - конец картинкиklopa-aСпасибо буду думать. Отпишусь.совершенно необязательно, AutoSize сам определит размер картинкиklopa-aBelow0 Я смотрю от тебя больше слов чем дела.верно подмечено
klopa-aДа, хочу разобраться. Иначе толку то. Ну, если уж по честному хочется узнать подсказку, в какую сторону мне двигатьсяТогда такой вопрос, ты сама написал этот код? Понимаешь ли ты, что делает
Код: vbnet
1.
2.
VScroll1.Max = (Picture.Height - Picture1.ScaleHeight) / 100
HScroll1.Max = (Picture.Width - Picture1.ScaleWidth) / 100

?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Полосы прокрутки / 24 сообщений из 24, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]