AutoRedraw или что-то в этом духе...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

AutoRedraw или что-то в этом духе...

Сообщение XairOn » 08.03.2005 (Вт) 18:08

Добрый день, господа, у меня такая проблема возникла: делаю что-то вроде Paint'а... вобщем простенький графический редактор, чисто в позновательных целях, так вот рабочая область (т.е. там где собственно и происходит рисование) это PictureBox, так вот, если что-нибудь нарисовать, а потом свернуть окно... или просто перекрыть его другим окном, нарисованное изображение стирается, как этого избежать. Сначала я думал с AutoRedraw поэкспериментировать, но после рядя эксперементов (...их всего 4 было :-) ) выяснилось, что дело тут совсем не в этом... так в чем же???

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

Сообщение Amed » 08.03.2005 (Вт) 18:17

а) как рисуем? Pset/Line?
б) дело-то в AutoRedraw всё-таки, кажется ;)

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 08.03.2005 (Вт) 21:26

Amed писал(а):как рисуем? Pset/Line?

а рисуем мы апями: LineTo...
Amed писал(а):дело-то в AutoRedraw всё-таки, кажется

Возможно ты и прав, но у меня имеется всего 2 контрола имеющих свойство AutoRedraw: один PictureBox (внутри которого рисуем) ну и сама форма конечно же... так вот в первом сообщении я говорил, что аытался эксперементировать с AutoRedraw и провел 4 эксперимента :D ... вобщем-то этим самым я перебрал все возможные комбинации (для двух элементов их как раз 4 :-) )... может я, конечно, что-то не так сделал... подскажи как правильно???

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

Сообщение tyomitch » 08.03.2005 (Вт) 22:28

Там где рисуешь - там и должно стоять AutoRedraw. Там где не рисуешь - пофигу что стоит :-D
Чтобы графика, нарисованная апями при AutoRedraw=True, отображалась - надо после её отрисовки вызвать метод Refresh.
Изображение

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

Сообщение Amed » 08.03.2005 (Вт) 22:34

А у меня /только что проверил/ нарисованное обновляется в любом случае (если AutoRedraw=True). Сворачиваю/разворачиваю, таскаю туда-сюда, и .Refresh не нужен :?

Но на всякий случай про Refresh буду помнить, не знал :)

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

Сообщение tyomitch » 08.03.2005 (Вт) 22:58

Amed писал(а):А у меня /только что проверил/ нарисованное обновляется в любом случае (если AutoRedraw=True). Сворачиваю/разворачиваю, таскаю туда-сюда, и .Refresh не нужен :?

Такое м.б. в двух случаях:
- у тебя VB5;
- рисуешь не апями.

Потому что нарисованное апями в VB6 при AutoRedraw=True отображается не немедленно, а при перерисовке (свернуть/развернуть, заслонить/открыть, либо просто вызвать Refresh :-))
Изображение

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

Сообщение Amed » 08.03.2005 (Вт) 23:02

Ага, проверил. Если ставить LineTo в Form_Load, то, видимо, Refresh вызывается сам. Если ставить, скажем, в Form_Click, то надо вызывать ручками...
Всем спасибо! ;)


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 156

    TopList