![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
IvanProg |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 22.3.2008 Репутация: нет Всего: нет |
Привет.
Как узнать загрузилась ли форма в данный момент? Мне нужно в Resize выполнить функцию, если нужный объект загрузился (форма)? |
|||
|
||||
amarenkov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
IvanProg , может имеет смысл просто повесить обработчик на событие Load формы?
|
|||
|
||||
IvanProg |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 22.3.2008 Репутация: нет Всего: нет |
Есть pictureBox , в нем я рисую, размер его может меняется, по окончании изменения размера вновь нужно перерисовать содержимое.
Как это сделать? |
|||
|
||||
amarenkov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Если ты в нем рисуешь в методе Paint, то ничего больше не надо. Иначе надо в событии Resize вызвать твою функцию рисования.
P.S. Вообще-то, лучше все рисование перенести в событие Paint PictureBox. Этим самым ты себя избавишь от многих проблем. Это сообщение отредактировал(а) amarenkov - 18.4.2008, 13:14 |
|||
|
||||
IvanProg |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 22.3.2008 Репутация: нет Всего: нет |
amarenkov, я решил воспользоваться твоим советом.
Но вот проблема: Для того, чтобы пользовательне видил мерцаний на контроле, я сначала рисую в bitmap, затем его просто присваиваю: picGraph.Image = grForm; С этой строкой получается следующее: ![]() А без picGraph.Image = grForm; ![]() Там, кажется, после всего моего рисования надо вставить какойто оператор, чтобы было все нормально, кто знает? Как максимально быстро поместить bitmap в picturebox? |
|||
|
||||
amarenkov |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Пиши так:
И все будет хорошо ![]() Добавлено @ 13:43 Либо, присваивай, как присваиваешь, но в Resize PiztureBox пиши изменение размера у битмапа:
Тогда твой grForm будет так же менять размер, как и PictureBox. Добавлено через 10 минут и 25 секунд А вообще, что ты хочешь сделать на изменение размера? Это сообщение отредактировал(а) amarenkov - 18.4.2008, 13:45 |
||||
|
|||||
IvanProg |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 22.3.2008 Репутация: нет Всего: нет |
Ну вообще на изменение размера я хотел сделать перерисовку графика.
|
|||
|
||||
amarenkov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
||||
|
||||
IvanProg |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 22.3.2008 Репутация: нет Всего: нет |
Ты все правильно говоришь.
Теперь график перерисовывается, но вот воспользовавшись твоим советом: e.Graphics.DrawImage(grForm, 0, 0); Почему-то получается: ![]() Это получается в результате последовательности изменения размеров picturebox. Рисую я в paint, процедуре. Это сообщение отредактировал(а) IvanProg - 18.4.2008, 14:13 |
|||
|
||||
amarenkov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
IvanProg , будь другом - покажи функции на Pain и Resize у PictureBox.
|
|||
|
||||
IvanProg |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 22.3.2008 Репутация: нет Всего: нет |
Может быть лучше использовать BitBlt, для копирования bitmep'а?
|
|||
|
||||
amarenkov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Да результат-то ты получишь один и тот же. Может с небольшой разницей во времени.
Что-то я совсем не пойму, как у тебя получается последняя картина. Ты в Resize изменяешь размер битмапа? |
|||
|
||||
IvanProg |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 22.3.2008 Репутация: нет Всего: нет |
private void picGraph_Paint(object sender, PaintEventArgs e)
{ //picGraph - picture box Bitmap grForm = new Bitmap(this.picGraph.Width, this.picGraph.Height); DrawGraphic f = new DrawGraphic(); parsN.SetExpr(((FormData)form_g.m_manager.ToolWindows["FormData"]).getFormul); f.fPars = parsN; f.ax = -1.5; f.bx = 5; f.grap = grForm; DrawGraphic.t_Iter tmp; tmp.type = 1; tmp.sizeIter = 0.3; //Генерирует график в grForm f.DrawingGraphic(tmp); e.Graphics.DrawImage(grForm, 0, 0); } Получается: ![]() Ребята, подскажите что делать? Это сообщение отредактировал(а) IvanProg - 18.4.2008, 14:43 |
|||
|
||||
amarenkov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Ооочень странно. А если ты сделаешь вот так:
, то что получится ? |
|||
|
||||
IvanProg |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 22.3.2008 Репутация: нет Всего: нет |
amarenkov, такая же хрень получается.
![]() Попробую обьяснить немного. Мне кажется, что PictureBox не полностью перерисовывается просто, а только вновь добавленая часть (при изменении размеров в большую сторону, а при изменении в меньшую - созжается впечатление что картинка не перерисовывается), следовательно проблема в e.Graphics.DrawImage(grForm, 0, 0); или в неправильном ее использовании, можно было бы использовать: picGraph.Image = grForm; но в этом случае происходит какая-то фигня с фонами контролов. Каким третьим способом залить picturebox? Это сообщение отредактировал(а) IvanProg - 18.4.2008, 15:32 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |