Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82

Нарисованная в форме графика стирается

28.05.2014, 20:25. Показов 1872. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть две формы, на первой форме есть кнопка по которой я вызываю вторую форму и отрисовываю на второй форме некоторый график - форма открывается, а графика нет((
C++
1
2
3
4
5
        private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                     Form2^ f2=gcnew Form2();
                     f2->Show();//вызываю вторую форму
                     f2->Frm();//отрисовываю на ней рисунок
         }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public ref class Form2 : public System::Windows::Forms::Form
    {
    public:
        Form2(void)
        {
        ...
        }
        void Frm() 
            {
                System::Drawing::Graphics ^grr = Form2::pictureBox1->CreateGraphics();
                System::Drawing::Pen^ my_pen=gcnew System::Drawing::Pen(System::Drawing::Color::Aqua,3);
                int x0=pictureBox1->Width;
                int y0=pictureBox1->Height;
                grr->DrawLine(my_pen,0,x0/2,y0,x0/2);
             }
    }
Как сделать что бы отрисовывался график?
На второй форме ничего не должно быть кроме PictureBox
Спасибо!)

Добавлено через 8 часов 17 минут
Есть догадка: поскольку рисую в PictureBox, то у меня нарисованный график стирается, другими словами, форма открывается после того как я на ней рисую график, как проверить что форма открыта, для того чтобы можно было на ней что-то делать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2014, 20:25
Ответы с готовыми решениями:

Рисование графика: обработка новых входящих данных и движение графика на форме
Подскажите каким способом можно вывести график частью главного окна программы, при чем график получает данные *в живую* с устройства по...

Нарисованная таблица пропадает
Program KT; Uses crt; label 10; type spisok=record marky:string; model:string; imja:string; fam:string; ...

После сворачивания программы исчезает мною нарисованная сетка
Здравствуйте ! Разбираюсь с курсовой работой. Надо написать игру крестики-нолики на неограниченном пространстве. Это мой первый более или...

3
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
28.05.2014, 23:37
В вашем коде графика рисуется лишь раз - в конструкторе, а нужно, чтобы она перерисовывалась при каждом вызове события Paint для формы - он возникает при перекрытии формы другим коном, сворачивании/разворачивании и т.д. (если интересно, поищите инфу о сообщении WM_PAINT).
Вам нужно рисовать в обработчике события Paint формы
C++
1
2
3
4
5
6
7
8
private: System::Void Form2_Paint(System::Object^ sender,
  System::Windows::Forms::PaintEventArgs^  e) {
    System::Drawing::Graphics ^grr = e->Graphics;
    System::Drawing::Pen^ my_pen=gcnew System::Drawing::Pen(System::Drawing::Color::Aqua,3);
    int x0=pictureBox1->Width;
    int y0=pictureBox1->Height;
    grr->DrawLine(my_pen,0,x0/2,y0,x0/2);
}
1
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
29.05.2014, 22:33  [ТС]
Рисует при открывании, теперь проблема как очищать поверхность?)
C++
1
grr->Clear(Color::White);
не работает...
то есть другими словами хочу так:
C++
1
2
3
4
5
6
7
8
9
private: System::Void Form2_Paint(System::Object^ sender,
 System::Windows::Forms::PaintEventArgs^  e) {
    System::Drawing::Graphics ^grr = e->Graphics;
    System::Drawing::Pen^ my_pen=gcnew System::Drawing::Pen(System::Drawing::Color::Aqua,3);
    grr->Clear(Color::White);//<<<<<<<<<<<<<<<<<-------------------------------------------------
    int x0=Form2::Width;
    int y0=Form2::Height;
    grr->DrawLine(my_pen,0,x0/2,y0,x0/2);
}
изменяю размеры окна, график отрисовывается, но предыдущие графики остаются...
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
30.05.2014, 23:14
Цитата Сообщение от bobibu Посмотреть сообщение
изменяю размеры окна, график отрисовывается, но предыдущие графики остаются...
Чтобы указать, что надо перерисовать форму, можно добавить вызов Invalidate() в обработчик события Resize.
C++
1
2
3
    private: System::Void Form1_Resize(System::Object^  sender, System::EventArgs^  e) {
                 this->Invalidate();
             }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.05.2014, 23:14
Помогаю со студенческими работами здесь

Линия, нарисованная мышкой, перерисовывается при изменении размеров окна
подскажите пожалуйста, как сделать так, чтобы нарисованная мышкой линия не исчезала, а перерисовывалась при изменении размеров окна. ...

Что производительнее, Shape или та же фигура нарисованная через DrawingVisual?
Добрый день, у меня два вопроса по производительности. 1. Что производительнее, Shape или та же фигура нарисованная через...

Графика в форме, азы.
В вузе дали задание. Но в учебнике нету ничего про графику. Есть ли туториалы про графику? Ну и вообще как сделать простейшый смайлик,...

Интерактивная графика в форме
Здравствуйте! Никогда не работал с графикой. Есть картинка, которую нужно перенести на форму. Нужно чтобы: 1) можно было изменять...

Рисование на форме графика
Добрый вечер, форумчане:) Мне нужно &quot;нарисовать&quot; на форме (на PictureBox'е) график, не математический (x,y,z). Нарисовать сам график и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru