Модераторы: gambit, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить, сформирована ли форма, Как определить, сформирована ли форма 
:(
    Опции темы
IvanProg
Дата 18.4.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



Привет.
Как узнать загрузилась ли форма в данный момент?
Мне нужно в Resize выполнить функцию, если нужный объект загрузился (форма)?
PM MAIL   Вверх
amarenkov
Дата 18.4.2008, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



IvanProg , может имеет смысл просто повесить обработчик на событие Load формы?
PM MAIL ICQ   Вверх
IvanProg
Дата 18.4.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



Есть pictureBox , в нем я рисую, размер его может меняется, по окончании изменения размера вновь нужно перерисовать содержимое.
Как это сделать?
PM MAIL   Вверх
amarenkov
Дата 18.4.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Если ты в нем рисуешь в методе Paint, то ничего больше не надо. Иначе надо в событии Resize вызвать твою функцию рисования.

P.S. Вообще-то, лучше все рисование перенести в событие Paint PictureBox. Этим самым ты себя избавишь от многих проблем. 

Это сообщение отредактировал(а) amarenkov - 18.4.2008, 13:14
PM MAIL ICQ   Вверх
IvanProg
Дата 18.4.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



amarenkov, я решил воспользоваться твоим советом.
Но вот проблема:
Для того, чтобы пользовательне видил мерцаний на контроле, я сначала рисую в bitmap, затем его просто присваиваю:
picGraph.Image = grForm;
С этой строкой получается следующее:
user posted image

А без picGraph.Image = grForm;
user posted image

Там, кажется, после всего моего рисования надо вставить какойто оператор, чтобы было все нормально, кто знает?
Как максимально быстро поместить bitmap в picturebox?
PM MAIL   Вверх
amarenkov
Дата 18.4.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Пиши так:

Код

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawImage(grForm, 0, 0);
        }


И все будет хорошо smile.

Добавлено @ 13:43
Либо, присваивай, как присваиваешь, но в Resize PiztureBox пиши изменение размера у битмапа:
Код

        private void pictureBox1_Resize(object sender, EventArgs e)
        {
            grForm = new Bitmap((sender as PictureBox).Width, (sender as PictureBox).Height);
            (sender as PictureBox).Image = grForm;
            // Функция рисования...
        }


Тогда твой grForm будет так же менять размер, как и PictureBox.

Добавлено через 10 минут и 25 секунд
А вообще, что ты хочешь сделать на изменение размера?

Это сообщение отредактировал(а) amarenkov - 18.4.2008, 13:45
PM MAIL ICQ   Вверх
IvanProg
Дата 18.4.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



Ну вообще на изменение размера я хотел сделать перерисовку графика.
PM MAIL   Вверх
amarenkov
Дата 18.4.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Цитата(IvanProg @  18.4.2008,  14:02 Найти цитируемый пост)
... перерисовку графика. 


Так он же и так рисуется после изменения размера. Расскажи по-подробнее в чем проблема smile. А то у меня ощущение, что ты хочешь одного, а я тебе другое рассказываю smile.
PM MAIL ICQ   Вверх
IvanProg
Дата 18.4.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



Ты все правильно говоришь.
Теперь график перерисовывается, но вот воспользовавшись твоим советом:
e.Graphics.DrawImage(grForm, 0, 0);
Почему-то получается:
user posted image

Это получается в результате последовательности изменения размеров picturebox.
Рисую я в paint, процедуре.

Это сообщение отредактировал(а) IvanProg - 18.4.2008, 14:13
PM MAIL   Вверх
amarenkov
Дата 18.4.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



IvanProg , будь другом - покажи функции на Pain и Resize у PictureBox.
PM MAIL ICQ   Вверх
IvanProg
Дата 18.4.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



Может быть лучше использовать BitBlt, для копирования bitmep'а?
PM MAIL   Вверх
amarenkov
Дата 18.4.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Да результат-то ты получишь один и тот же. Может с небольшой разницей во времени. 

Что-то я совсем не пойму, как у тебя получается последняя картина. Ты в Resize изменяешь размер битмапа?
PM MAIL ICQ   Вверх
IvanProg
Дата 18.4.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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);
          }

Получается:
user posted image

Ребята, подскажите что делать?

Это сообщение отредактировал(а) IvanProg - 18.4.2008, 14:43
PM MAIL   Вверх
amarenkov
Дата 18.4.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Ооочень странно. А если ты сделаешь вот так:
Код

            tmp.sizeIter = 0.3;

            //Генерирует график в grForm
            //f.DrawingGraphic(tmp);
            e.Graphics.DrawLine(new Pen(Color.Black), 0, 0, this.picGraph.Width, this.picGraph.Heigh);

            e.Graphics.DrawImage(grForm, 0, 0);

, то что получится ?
PM MAIL ICQ   Вверх
IvanProg
Дата 18.4.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



amarenkov, такая же хрень получается.
user posted image

Попробую обьяснить немного.
Мне кажется, что PictureBox не полностью перерисовывается просто, а только вновь добавленая часть (при изменении размеров в большую сторону, а при изменении в меньшую - созжается впечатление что картинка не перерисовывается), следовательно проблема в e.Graphics.DrawImage(grForm, 0, 0);
или в неправильном ее использовании, можно было бы использовать:
picGraph.Image = grForm;
но в этом случае происходит какая-то фигня с фонами контролов.

Каким третьим способом залить picturebox?

Это сообщение отредактировал(а) IvanProg - 18.4.2008, 15:32
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0795 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.