Построение электрических схем в С++Builder

  • Вид работы:
    Контрольная работа
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,21 Мб
  • Опубликовано:
    2012-10-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Построение электрических схем в С++Builder

Задание

программа графический электрическая схема

Составить программу на языке программирования C++Builder для построения электрической схемы, изображенной на рис.1

Рисунок 1-Исходная схема

Теоретические сведения

 

Методы изображения графических элементов

Любая картинка, чертеж или схема могут рассматриваться как совокупность графических примитивов. Примитивы, условно можно разделить на группы: примитивы рисования контуров и площадные фигуры. К примитивам контуров относятся: линии (line),прямоугольники (rectangle)Б дуги (arc), окружности (circle), эллипсы (ellipse), многоугольники (drawpoly) и прочие не закрашиваемые внутри фигуры.

К площадным, заполняемым внутри фигурам, относятся закрашиваемые прямоугольники (FillRect), круговые и эллиптические секторы (Pie). Если у вас рисуемая фигура замкнута, но не закрашиваемая, например, многоугольник (Poligon), то его всегда можно заштриховать с помощью функций закраски (FloodFill, FillStyle). Для выбора цвета рисования применяется функция задания цвета графических примитивов (Pen->Color).

Линия

Вычерчивание прямой линии выполняет метод LineTo. Метод рисует линию из той точки, в которой в данный момент находится карандаш (эта точка называется текущей позицией карандаша или просто текущей), в точку, координаты которой указаны в инструкции вызова метода. Например, команда:

Image1->Canvas->LineTo(100,200);

Рисует линию в точку с координатами (100,200), после чего текущей становится точка с координатами (100,200).

Начальную точку линии можно задать, переместив карандаш в нужную точку графической поверхности. Это возможно сделать при помощи метода MoveTо, указав в качестве параметров, координаты точки начала линии. Например, операторы:

Image1->Canvas->MoveTo(10,10);

Image1->Canvas->LineTo(50,10);

Рисуют горизонтальную линию из точки (10,10) в точку (50,10).

Используя свойство текущей точки, можно нарисовать ломаную линию.

Например, операторы:

Image1->Canvas->LineTo(50,10);->Canvas->LineTo(10,20);1->Canvas->LineTo(50,20);

Рисуют линию, похожую на букву Z.

Прямоугольник

Метод Rectangle вычерчивает прямоугольник. В инструкции вызова метода надо указать координаты двух точек - углов прямоугольника. Например, команда:

Image1->Canvas->Rectangle(10,10,50,50);

Рисует квадрат, левый верхний угол которого находится в точке (10,10), а правый нижний в точке (50,50).

Цвет, вид и ширину линии контура прямоугольника определяют значения свойства Pen, а цвет и стиль заливки области внутри прямоугольника - значение свойства Brush той поверхности, на которой метод рисует прямоугольник.

Есть еще два метода, которые вычерчивают прямоугольник. Метод FillRect вычерчивает закрашенный прямоуголник, используя в качестве инструмента только кисть (Brush), а метод FrameRect - только контур и использует только карандаш (Pen). У этих методов только один параметр - структура типа Rect.

Окружность в эллипс

Нарисовать эллипс или окружность (частный случай эллипса) можно при помощи метода Ellipse. Инструкция выхова метода в общем виде выглядит следующим образом:

Image1->Canvas->Ellipse(x1,y1,x2,y2)

Параметры x1,y1,x2,y2 определяют координаты прямоугольника, внутри которого вычерчивается эллипс или, если прямоугольник является квадратом,- окружность.

Вместо четырех параметров - координат диагональных углов прямоугольника - методу Ellipse можно передать один - объект типа Rect. Следующий фрагмент кода демонстрирует использование объекта TRect в качестве параметра метода Ellipse.

TRect rec=Rect(10,10,50,50);->Canvas->Ellipse(rec);

Как в случае вычерчивания других примитивов, вид контура эллипса (цвет, толщину и стильлинии) определяют значения свойства Pen, а цвет и стиль заливки области внутри эллипса - -значения свойства Brush той поверхности (Canvas), на которой метод чертит.

Дуга

Метод Arc рисует дугу - часть эллипса. Инструкция вызова метода в общем виде выглядит так:

Image1->Canvas->Arc(x1,y1,x2,y2,x3,y3,x4,y4);

Параметры x1,y1,x2,y2 определяют эллипс, частью которого является дуга. Параметры x3 и y3 задают начальную, а x4 и y4 - конечную точку дуги. Начальная (конечная) точка дуги - это точка пересечения границы эллипса и прямой, проведенной из центра эллипса в точку с координатами x3 и y3(x4,y4). Метод Arc вычерчивает дугу против часовой стрелки от начальной точки до конечной.

Текст


Image1->Canvas->TextOut(x,y,Текст)

Параметр текст задает выводимый текст. Параметры x и y определяют координаты точки графической поверхности,от которой выполняется вывод текста.

Форма проекта


Текст программы

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"*Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

__fastcall TForm1::Button1Click(TObject *Sender)

{TPoint p[3];[0].x=150;p[0].y=40;[1].x=145;p[1].y=45;[2].x=155;p[2].y=45;->Canvas->Brush->Color=clBlack;->Canvas->Polygon(p,2);//отображает многоульник->Canvas->MoveTo(150,45);->Canvas->LineTo(150,65);->Canvas->Brush->Color=clWhite;->Canvas->Rectangle(155,65,145,90);//отображает прямоугольник->Canvas->MoveTo(150,90);->Canvas->LineTo(150,105);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(147,105,153,111);//отображает точка->Canvas->MoveTo(150,108);->Canvas->LineTo(170,108);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(167,105,173,111);->Canvas->MoveTo(170,108);->Canvas->LineTo(210,108);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(207,105,213,111);->Canvas->MoveTo(210,108);->Canvas->LineTo(220,108);->Canvas->Brush->Color=clWhite;->Canvas->Rectangle(220,103,245,113);->Canvas->MoveTo(245,108);->Canvas->LineTo(265,108);->Canvas->MoveTo(265,101); //конденсатор->Canvas->LineTo(265,115);->Canvas->MoveTo(268,101);//конденсатор->Canvas->LineTo(268,115);->Canvas->MoveTo(268,108);->Canvas->LineTo(290,108);p1[3];[0].x=295;p1[0].y=108;[1].x=290;p1[1].y=103;[2].x=290;p1[2].y=113;->Canvas->Brush->Color=clBlack;->Canvas->Polygon(p1,2);->Canvas->MoveTo(210,108);->Canvas->LineTo(210,125);->Canvas->MoveTo(203,125);//конденсатор->Canvas->LineTo(217,125);->Canvas->MoveTo(203,128);//конденсатор->Canvas->LineTo(217,128);->Canvas->MoveTo(210,128);->Canvas->LineTo(210,145);->Canvas->MoveTo(210,145);->Canvas->LineTo(170,145);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(167,143,173,149);->Canvas->MoveTo(170,111);->Canvas->LineTo(170,116);->Canvas->Arc(162,116,178,124,170,124,170,116);// дуга->Canvas->Arc(162,124,178,132,170,132,170,124);//дуга->Canvas->Arc(162,132,178,140,170,140,170,132);//дуга->Canvas->MoveTo(170,140);->Canvas->LineTo(170,145);->Canvas->MoveTo(147,108);->Canvas->LineTo(140,108);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(137,105,143,111);->Canvas->MoveTo(140,108);->Canvas->LineTo(140,125);->Canvas->MoveTo(137,108);->Canvas->LineTo(120,108);->Canvas->MoveTo(120,108);->Canvas->LineTo(120,155);->Canvas->Brush->Color=clWhite;->Canvas->Rectangle(125,155,115,180);->Canvas->MoveTo(120,180);->Canvas->LineTo(120,190);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(117,187,123,193);->Canvas->MoveTo(120,190);->Canvas->LineTo(108,190);->Canvas->MoveTo(105,183);//конденсатор->Canvas->LineTo(105,197);->Canvas->MoveTo(108,183);// конденсатор->Canvas->LineTo(108,197);->Canvas->MoveTo(105,190);->Canvas->LineTo(94,190);->Canvas->MoveTo(94,190);->Canvas->LineTo(94,207);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(91,204,97,210);->Canvas->MoveTo(94,210);->Canvas->LineTo(94,231);->Canvas->MoveTo(94,231);->Canvas->LineTo(83,231);->Canvas->Arc(72,213,88,221,80,221,80,213);// дуга->Canvas->Arc(72,221,88,229,80,229,80,221);// дуга->Canvas->Arc(72,229,88,237,80,237,80,229);// дуга->Canvas->MoveTo(80,213);->Canvas->LineTo(80,206);->Canvas->MoveTo(80,237);->Canvas->LineTo(80,242);->Canvas->MoveTo(80,206);->Canvas->LineTo(60,206);->Canvas->MoveTo(60,206);->Canvas->LineTo(60,221);->Canvas->MoveTo(53,221);//конденсатор->Canvas->LineTo(67,221);->Canvas->MoveTo(53,224);//конденсатор->Canvas->LineTo(67,224);->Canvas->MoveTo(60,224);->Canvas->LineTo(60,242);->Canvas->MoveTo(60,242);->Canvas->LineTo(81,242);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(78,239,84,245);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(66,203,72,209);->Canvas->MoveTo(69,206);->Canvas->LineTo(69,194);->Canvas->MoveTo(62,192);//конденсатор->Canvas->LineTo(76,192);->Canvas->MoveTo(62,195);//конденсатор->Canvas->LineTo(76,195);->Canvas->MoveTo(69,192);->Canvas->LineTo(69,170);->Canvas->MoveTo(69,180);->Canvas->LineTo(74,170);->Canvas->MoveTo(69,180);->Canvas->LineTo(64,170);->Canvas->MoveTo(81,239);->Canvas->LineTo(81,250);->Canvas->MoveTo(76,250);->Canvas->LineTo(87,250);->Canvas->MoveTo(94,207);->Canvas->LineTo(105,207);->Canvas->MoveTo(105,200);//конденсатор->Canvas->LineTo(105,214);->Canvas->MoveTo(108,200);// конденсатор->Canvas->LineTo(108,214);->Canvas->MoveTo(108,207);->Canvas->LineTo(120,207);->Canvas->MoveTo(120,207);->Canvas->LineTo(120,187);->Canvas->MoveTo(123,190);->Canvas->LineTo(128,190);->Canvas->Pen->Width=2; //линия в толщину 2 пикселя->Canvas->MoveTo(128,180);->Canvas->LineTo(128,200);->Canvas->Pen->Width=1;->Canvas->MoveTo(128,188);->Canvas->LineTo(140,180);->Canvas->MoveTo(128,192);->Canvas->LineTo(140,200);p2[3];[0].x=140;p2[0].y=200;[1].x=140;p2[1].y=197;[2].x=137;p2[2].y=200;->Canvas->Brush->Color=clBlack;->Canvas->Polygon(p2,2);->Canvas->MoveTo(140,180);->Canvas->LineTo(140,168);->Canvas->MoveTo(140,207);->Canvas->LineTo(170,207);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(167,204,173,210);->Canvas->MoveTo(133,125);//конденсатор->Canvas->LineTo(147,125);->Canvas->MoveTo(133,128);//конденсатор->Canvas->LineTo(147,128);->Canvas->MoveTo(140,128);->Canvas->LineTo(140,146);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(137,143,143,149);->Canvas->MoveTo(143,146);->Canvas->LineTo(170,146);->Canvas->MoveTo(140,149);->Canvas->LineTo(140,170);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(137,162,143,168);->Canvas->MoveTo(140,165);->Canvas->LineTo(170,165);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(167,162,173,168);->Canvas->MoveTo(173,165);->Canvas->LineTo(191,165);->Canvas->MoveTo(191,158);//конденсатор->Canvas->LineTo(191,172);->Canvas->MoveTo(194,158);//конденсатор->Canvas->LineTo(194,172);->Canvas->MoveTo(194,165);->Canvas->LineTo(212,165);->Canvas->MoveTo(212,165);->Canvas->LineTo(212,175);->Canvas->Arc(204,175,220,183,212,183,212,175);// дуга->Canvas->Arc(204,183,220,191,212,191,212,183);// дуга->Canvas->Arc(204,191,220,199,212,199,212,191);// дуга->Canvas->MoveTo(212,199);->Canvas->LineTo(212,207);->Canvas->MoveTo(212,207);->Canvas->LineTo(170,207);->Canvas->MoveTo(170,168);->Canvas->LineTo(170,183);->Canvas->Brush->Color=clBlack;->Canvas->Ellipse(138,204,144,210);->Canvas->MoveTo(141,207);->Canvas->LineTo(141,213);->Canvas->Brush->Color=clWhite;->Canvas->Rectangle(146,213,136,238);//отображает прямоугольник->Canvas->MoveTo(141,238);->Canvas->LineTo(141,243);->Canvas->MoveTo(141,242);->Canvas->LineTo(80,242);->Canvas->MoveTo(140,207);->Canvas->LineTo(140,200);->Canvas->MoveTo(163,183);//конденсатор->Canvas->LineTo(177,183);->Canvas->MoveTo(163,186);//конденсатор->Canvas->LineTo(177,186);->Canvas->MoveTo(170,186);->Canvas->LineTo(170,210);->Canvas->TextOut(135,25,"+4,5B");->Canvas->TextOut(120,60,"2.7K");->Canvas->TextOut(174,95,"35мГц");->Canvas->TextOut(225,85,"1.8K");->Canvas->TextOut(255,85,"10мк");->Canvas->TextOut(300,98,"к УЗЧ");->Canvas->TextOut(225,120,"6,8н");->Canvas->TextOut(240,165,"ВРЛ-100");->Canvas->TextOut(205,210,"70мГц");->Canvas->TextOut(159,210,"КТ315");->Canvas->TextOut(148,223,"100");->Canvas->TextOut(100,215,"6.8н");->Canvas->TextOut(30,199,"5..20");->Canvas->TextOut(50,180,"10");->Canvas->TextOut(50,155,"70мГц");->Canvas->TextOut(75,175,"10мк");->Canvas->TextOut(84,160,"100К*");

}

{();

}

//---------------------------------------------------------------------------

Результат данной работы



Список литературы

1. Швайко И.Г., Буката Л.Н., Шаповаленко В.А. Технологии программирования. Модуль №1. Часть 2. Графика в C++ Builder. Методические указания к лабораторным работам и выполнению комплексного задания./ Одесса 2012

2.       О.Г. Трофименко. Основи программування. Теорія та практика./Одесса Фенікс 2010

Похожие работы на - Построение электрических схем в С++Builder

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!