Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Как мне сделать ReDraw PictureBoxa Добавлено: 26.03.05 00:37  

Автор вопроса:  KOKA
Пожалуйста, помогите Новичку ...
Мне надо в PictureBox нарисовать сетку с помощью метода DrawGrid, но при перетаскивании окна с этим PictureBox, или при накрытии ПикчерБокса другим окном, все стирается.
Я слышал, что нужно перерисовать это дело в событии Paint, или создать OnPaint, но у меня почему-то не получаеться.
Будьте добры, уважаемые Монсты VB, дайте разъяснения в виде кода на VB.NET 2003 !

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 26.03.05 01:19
1. э... Я бы тебе посоветовал изменить ник, иначе тебя удалят/забанят...

2. Желательно приводить код...

Ответить

Номер ответа: 2
Автор ответа:
 KOKA



Вопросов: 14
Ответов: 27
 Профиль | | #2 Добавлено: 26.03.05 02:02
Уважаемый SNE, извините за неукюжество, поскольку я сдесь новичок. В последующем прошу делать мне хороший выговор. Да, простите, а как удалить из форума неудачный вопрос ?

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 26.03.05 02:16
в сети общаться принято "на ты", так как на счет воторого пожелания :) ?

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

Ответить

Номер ответа: 4
Автор ответа:
 KOKA



Вопросов: 14
Ответов: 27
 Профиль | | #4 Добавлено: 26.03.05 02:43
Прошу прощения, так ТЫ понял мой вопрос ?
А, насчет кода... то я на Вас надеюсь...

Ответить

Номер ответа: 5
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #5 Добавлено: 29.03.05 12:52
Есть несколько вариантов решения проблеми:
1. Поместить код формирующий изображение в метод OnPaint

protected Overrides sub OnPaint(byval e as PaintEventArgs)
Dim G as Graphics
G=e.Graphics
...Формируем графику
End sub

2. Рисовать на обекте Bitmap. Сначало его создать, затем связать c елементом PictureBox- pictureBox1.Image=ObjBitmap и наконец получить обект типа Graphics- G=Graphics.FromImage(bmp)
Все это дело оформляеш в виде функции которая возвращает обект Graphics, на котором и рисуеш.

Ответить

Номер ответа: 6
Автор ответа:
 KOKA



Вопросов: 14
Ответов: 27
 Профиль | | #6 Добавлено: 30.03.05 02:31
Спасибо за дельный совет, но всеравно есть некоторые неувязочки...
Дело в том, что для рисования сетки в PictureBox я использую метод DrawGrid класса ControlPaint (который позволяет рисовать

свои собственные элементы управления или составляющие элементов управления), а не класс Graphics.
Когда PictureBox выходит за поле видимости монитора, то метод OnPaint работает нормально и сетка в PictureBoxe хорошо

перерисовывается, но если я закрываю PictureBox другим окном (другое окно поверх PictureBoxа с сеткой), а потом переключаюсь

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

всегда была нарисована PictureBoxе.
То же происходит, если я скрываю PictureBox, а потом показываю его, хотя я и пробовал писать метод рисования сетки в событии

PictureBox__VisibleChanged:

Private Sub PictureBox1_VisibleChanged ...
ControlPaint.DrawGrid(PictureBox1.CreateGraphics, _
New Rectangle(0, 0, PictureBox1.Width, PictureBox1.Height), _
New Size(10, 10), Color.White)
End Sub

Да, и если я Вам еще не надоел, то прошу еще несколько подсказок !

1) Как изменить цвет рисуемой сетки ?
2) Как при загрузке формы автоматически рисовать эту сетку в PictureBoxе ?
3) Как сделать точную привязку любого эл.управления при его перемещении к нарисованной сетке (как например, в Design Mode

Бэйсика)

Может я где-то ошибаюсь ? Прошу указать и разъяснить !
Заранее благодарен !

Ответить

Номер ответа: 7
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #7 Добавлено: 31.03.05 15:45
Ну незнаю, я всегда рисовал на Graphics(то есть используя его методи )

Ответить

Номер ответа: 8
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #8 Добавлено: 31.03.05 15:57
Да и еще. Метод DrawGrid имеет своим аргументом обект Graphics - поверхность на которой ти будеш рисовать.
А для перерисовки елементов управления лучше использовать первий способ.

Ответить

Номер ответа: 9
Автор ответа:
 KOKA



Вопросов: 14
Ответов: 27
 Профиль | | #9 Добавлено: 01.04.05 23:30
Danser, я весьма благодарен за внимание !
Твои советы помогли мне справиться с половиной проблемы !

Но, но все же, почему если я закрываю PictureBox другим окном, а потом активизирую первое, эта чертова сетка удаляется ?
Может, при активации окна с ПикБоксом использовать какие-то события, типа Form_Resize, или Activated, ааа ?

А, как насчет примера кода для привязки любого эл.управления при его перемещении к нарисованной сетке (как например, в Design Mode) ?

Буду очень признателен !!!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам