-3 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 12
1

График функции некорректно перерисовывается после очистки формы

20.11.2013, 12:07. Показов 732. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, написал в форме программу, в которой график функции строится, как в машинном, так и в реальном времени(интервал 0.75с)и прикрутил эти два времени к двум кнопкам, так вот проблема в том, что когда я нажимаю реальное время график строится нормально, потом чищу экран и нажимаю машинное время, то оно не срабатывает! Хотя если нажать реальное время и через пару сек остановить и нажать машинное, то оно достроит до конца график. Вот как-то так, как решить проблему?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2013, 12:07
Ответы с готовыми решениями:

Функции очистки окна формы от нарисованного
У меня есть форма по ней движется изображение,и мне необходимо сделать очистку окна формы и очистку...

QFrame не перерисовывается после ресайза
При ресайзе QFrame от содержимого остаётся как бы шлейф. Есть ли какой-то флаг автоматической...

Graphics: Форма не перерисовывается после сворачивания
Microsoft Visual Basic 2010 Express Почему когда я нарисую на Graphics и сварачиваю окно а потом...

Graphics: Форма не перерисовывается после сворачивания
Столкнулся с проблемой при использовании Graphics. Я сворачиваю окно, а потом разворачиваю или...

7
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
20.11.2013, 12:17 2
эта проблема решается прикреплением проекта(либо полного кода) к сообщению
0
-3 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 12
20.11.2013, 12:28  [ТС] 3
вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#include <iostream.h>
#include <math.h>
#include <windows.h>
#pragma hdrstop
#include "kursa4.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
 
float p=1,q=0.87,g=0.57;
float Tk=0.75;
float result=0,I,tkon=15;
int i;
extern float m,k;
 
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::Button3Click(TObject *Sender)
{
ListBox1->Clear();
Series1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
DWORD start=GetTickCount();
float gorner[] = {k, g, q, p};
while (I<=tkon)
{
for(i=3;i>=0;i--)
{
result=result*I+gorner[i];
}
result=fabs(result)+m;
Series1->AddXY(I,result,"",clBlue);
ListBox1->Items->Add("y("+FloatToStrF(I,ffNumber,15,2)+")="+FloatToStrF(result,ffNumber,15,4));
I=I+Tk;
result=0;
}
Edit1->Text=FloatToStr((GetTickCount()-start)/1000.);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button4Click(TObject *Sender)
{
Form1->Show();
Form2->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button5Click(TObject *Sender)
{
exit(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Timer1 -> Enabled = !(Timer1 -> Enabled);
 if (Timer1 -> Enabled == true)
   Button1 -> Caption = "Пауза";
 else
   Button1 -> Caption = "Старт";
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
float l;
float gorner[] = {k, g, q, p};
 
if (I<=tkon)
{
for(i=3;i>=0;i--)
{
l++;
result=result*I+gorner[i];
}
l=Timer1->Interval*750/1000;
result=fabs(result)+m;
Series1->AddXY(I,result,"",clBlue);
ListBox1->Items->Add("y("+FloatToStrF(I,ffNumber,15,2)+")="+FloatToStrF(result,ffNumber,15,4));
result=0;
I=I+Tk;
}
else
Timer1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button6Click(TObject *Sender)
{
Form3->Show();
Form2->Hide();
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm2::Button8Click(TObject *Sender)
{
Edit1->Clear();
}
//---------------------------------------------------------------------------
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
20.11.2013, 12:54 4
потому что переменную I во-первых в самом начале надо инициализировать как-то, во-вторых после очистки.
и вообще начинать использовать объявленную, но неинициализированную переменную некорректно.
0
Практикантроп
4823 / 2717 / 524
Регистрация: 23.09.2011
Сообщений: 5,777
20.11.2013, 13:04 5
AntonChik, I объявляется как глобальная, поэтому инициализирована нулем (если только я не ошибаюсь с типом float).
2
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
20.11.2013, 13:09 6
nick42, спасибо, глобальность я упустил из виду.
тем не менее переинициализация требуется.
0
-3 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 12
20.11.2013, 13:09  [ТС] 7
Цитата Сообщение от nick42 Посмотреть сообщение
AntonChik, I объявляется как глобальная, поэтому инициализирована нулем (если только я не ошибаюсь с типом float).
Так как тогда решить проблему?
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
20.11.2013, 13:11 8
я полагаю так
C++
1
2
3
4
5
6
void __fastcall TForm2::Button3Click(TObject *Sender)
{
ListBox1->Clear();
Series1->Clear();
I=0;
}
1
20.11.2013, 13:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2013, 13:11
Помогаю со студенческими работами здесь

Компьютер завис после очистки корзины, а после перестал нормально включаться
В этот момент работал хром, Стим и антивирус в фоне. Я хотел очистить корзину, там было две папки и...

Размеры формы.График функции
Доброе время суток. Ребят встала передо мной задача сделать так, чтобы когда запускаешь проект,...

На поверхности формы нарисовать график функции z(x)=2cos2x-b
Напишите программу,которая на поверхности формы вычерчивает график функции z(x)=2cos2x-b ...

Написать процедуру очистки формы
Написать процедуру очистки формы.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru