Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
brus69
0 / 0 / 0
Регистрация: 23.03.2011
Сообщений: 3
#1

Аналоговый амперметр - C++

04.06.2011, 14:30. Просмотров 1109. Ответов 1
Метки нет (Все метки)

Добрый день, подскажите что в моей программе не так.
Уже 5 раз не могу здать программу своему научному руководителю.
Задача: написать программу аналоговый амперметр
в коде должны быть классы
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
//---------------------------------------------------------------------------
 
#ifndef Unit2H
#define Unit2H
#include <vcl.h>
#pragma hdrstop
#include <Classes.hpp>
#include <math.h>
#include <stdlib.h>
#pragma package(smart_init)
//#pragma resource "*.dfm"
 
class ScaleA //класс, рисующий букву А
{
    TImage*Image1;//указатель на изображение 
public:
    ScaleA(TImage*pIm=0)//конструктор класса
    {
       Image1=pIm;
    }
    void SetImage(TImage*pIm)//метод задания изображения
    {
       Image1=pIm;
    }
    int Draw() //метод рисования буквы А
    {
        if(!Image1)
            return 0;
        int font=Image1->Canvas->Font->Height;//сохранения текущего шрифта
        Image1->Canvas->Font->Height=90; //задание нового шрифта
        Image1->Canvas->TextOutA(215,150,"A"); //рисование буквы А под шкалой
        Image1->Canvas->Font->Height=font;
        return 1;
    }
};
 
class Scale //класс, рисующий шкалу
{
    TImage*Image1;
public:
    Scale(TImage*pImage=0) // конструктор
    {
 
        this->Image1=pImage;
 
    }
    void SetImage(TImage*pImage) //метод задания изображения
    {
        this->Image1=pImage;
    }
    int Draw() //метод рисования шкалы
    {
        if(!this->Image1)
            return 0;
        Image1->Canvas->Brush->Color=(TColor)RGB(255,255,255);
    Image1->Canvas->FillRect(Image1->Canvas->ClipRect); //создание белого фона для изображения
    Image1->Canvas->Brush->Color=(TColor)RGB(0,0,0);    //задание черного цвета кисти
    TRect rect;
    rect.left=190;
    rect.Top=300;
    rect.Right=290;
    rect.Bottom=305;
    Image1->Canvas->FillRect(rect); //рисование основания стрелки
    Image1->Canvas->MoveTo(240,100);//
    Image1->Canvas->LineTo(240,80); //рисование нулевой отметки на шкале
    Image1->Canvas->Brush->Color=(TColor)RGB(255,255,255);//задание белого цвета для кисти
    Image1->Canvas->TextOutA(237,65,"0"); //изображение нуля на шкале
    for(int i=1;i<=15;i++) //разметка шкалы(положительная часть)
    {
        Image1->Canvas->MoveTo(240+200*sin(i*3*3.14/180),300-200*cos(i*3*3.14/180));
        Image1->Canvas->LineTo(240+((i%5)?210:220)*sin(i*3*3.14/180),300-((i%5)?210:220)*cos(i*3*3.14/180)); //рисование делений
        if(!(i%5))     //выделение каждого 5-го штриха
        {
            char buf[4];
            itoa(i*10,buf,10); //конвертирование числа в строки
            AnsiString tmp(buf);//создание стринга
            Image1->Canvas->TextOutA(240+((i%5)?210:220)*sin(i*3*3.14/180)-3,300-((i%5)?210:220)*cos(i*3*3.14/180)-15,tmp);     //подписывание деления
        }
    }
    for(int i=1;i<=15;i++) //разметка отрицательной части шкалы(все аналогично)
    {
        Image1->Canvas->MoveTo(240-200*sin(i*3*3.14/180),300-200*cos(i*3*3.14/180));
        Image1->Canvas->LineTo(240-((i%5)?210:220)*sin(i*3*3.14/180),300-((i%5)?210:220)*cos(i*3*3.14/180));
        if(!(i%5))
        {
            char buf[4];
            itoa(i*10,buf,10);
            AnsiString tmp(buf);
            Image1->Canvas->TextOutA(240-((i%5)?210:220)*sin(i*3*3.14/180)-10,300-((i%5)?210:220)*cos(i*3*3.14/180)-15,tmp);
        }
    }
    ScaleA scalea(Image1);//создание объекта класса, рисующего букву А на шкале
    scalea.Draw();//рисование буквы А
    return 1;
    }
 
} ;
 
class Arrow //класс, рисующий стрелку
{
    TImage*Image1;//указатель на ихображения
    float grad;//и отклонение в градусах
 public:
    Arrow(TImage*pImage=0)//конструктор
    {
        Image1=pImage;
        grad=0;
    }
    void SetImage(TImage*pImage)//метод задания изображения
    {
        Image1=pImage;
    }
    int Draw(float fGrad)//метод рисования стрелки
    {
        if(!Image1)
            return 0;
        grad=fGrad;
        Image1->Canvas->MoveTo(240,300);  //установление пера к основанию стрелки
        Image1->Canvas->Pen->Width=3; //задание толщины пера
        Image1->Canvas->LineTo(240+190*sin(grad*3.14/180),300-190*cos(grad*3.14/180));  //рисование основной части стрелки
        Image1->Canvas->Pen->Width=1; //задание толщины пера(указательной части)
        Image1->Canvas->LineTo(240+205*sin(grad*3.14/180),300-205*cos(grad*3.14/180));
        return 1;
    }
};
 
class Calc//класс, вычисляющий отклонение в градусах по величине тока
{
    float value,grad;
public:
    Calc()//конструктор по умолчанию
    {
 
 
    }
    float ObtainGrad(float tmp)//метод вычисления отклононеия стрелки
    {
        value=tmp;
        if((tmp>=150)||(tmp<=-150)) //если число выходит за диапазон (-150,150), стрелка "упирается" в соответствующий край шкалы
        {
           if(tmp>=150)
               grad=45;
           if(tmp<=-150)
           {
               grad=-45;
           }
        }
        else
           grad=45.0/150*tmp;
        return grad;
    }
 
};
 
 
 
//---------------------------------------------------------------------------
#endif
Вложения
Тип файла: rar проект123.rar (368.3 Кб, 32 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2011, 14:30     Аналоговый амперметр
Посмотрите здесь:

Как послать аналоговый звук в порт? - C++
Здравствуйте. Интересует вопрос как вывести звук в аналоговой форме. http://www.cyberforum.ru/audio-amplifier/thread1572652.html ...

Амперметр и Arduino - Arduino
Здравствуйте. Есть Arduino UNO R3 и есть амперметр. К амперметру припаян резистор на 1 кОм. Требуется сымитировать биение сердца, то есть...

Что измеряет амперметр? - Электроника
Здравствуйте! Возник вопрос: что именно измеряет амперметр? Ток это движение заряженных частиц (например электронов), сила тока это заряд...

Вольт-амперметр на ATmega8 - Микроконтроллеры
Подскажите пожалуйста, возможно ли сделать вольт/ампер метр на мега8 и чтобы выводил значения на ПК через USB? Искал в интернете, нашел...

Какой ток течет через амперметр - Электричество и магнетизм
Какой ток Iа течет через амперметр в схеме, показанной на рисунке? ЭДС источника Е=7.5 В, R1=15 ом, R2=R3=R4=10 ом.

Что покажет амперметр с внутренним сопротивлением - Электричество и магнетизм
Вольтметр с внутренним сопротивлением R1= 200 Ом, подключённый к источнику тока ЭДС E=12В, показывает U=11В. Что покажет амперметр с...

Определить ток, текущий через амперметр - Электричество и магнетизм
Помогите пожалуйста дорешать задачу. Зашла в тупик, смущает R3, как теперь ее выразить, что бы подставить в готовую формулу. Прилагаю...

Как из прибора сделать вольтметр и амперметр? - Электричество и магнетизм
Имеется прибор с ценой деления С=5мкА/дел. Шкала прибора имеет 150 делений внутреннее сопротивление r=100 Ом. Как из этого прибора сделать:...

Найти ток, который покажет амперметр - Электричество и магнетизм
какой ток покажет амперметр в схеме изображенной на картинке ? сопротивления резисторов R1 = 1,25 Ом R2 = 1 Ом R3 = 3 Ом R4 = 7 Ом, эдс...

Какую силу тока покажет амперметр, найти падение НАПРЯЖЕНИЯ - Электричество и магнетизм
Задание: Батарея с ЭДС E= 10 В и внутренним сопротивлением r=1 Ом имеет к.п.д=0.8. Падения потенциала на сопротивлениях R1 и R4 равны U1=4В...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
brus69
0 / 0 / 0
Регистрация: 23.03.2011
Сообщений: 3
04.06.2011, 14:46  [ТС]     Аналоговый амперметр #2
руководителю не нравиться что стоит указаталь на избражение TImage*Image1;//указатель на изображение
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru