Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


RoundRect(X1,Y1,X2,Y2) — будує прямокутник з округленими кутами




 

Приклад. Побудова кривої Без’є по опорних точках.

TPoint points[7];

points[0]=TPoint(0,0);

points[1]=TPoint(500,30);

points[2]=TPoint(0,40);

points[3]=TPoint(300,400);

points[4]=TPoint(200,200);

points[5]=TPoint(600,500);

points[6]=TPoint(0,550);

Canvas->PolyBezier(points,6);

 

Приклад. Вивести напис "C++ Builder" у середині зафарбованого еліпса. Передбачити у випадку зміни розмірів форми (подія OnResize) пропорційне до розмірів форми масштабування побудованого зображення.

 

void __fastcall TForm1::FormPaint(TObject *Sender)

{

int X,Y;

Canvas->Brush->Color= clYellow;

Canvas->Ellipse(0,0,ClientWidth,ClientHeight);

Canvas->Font->Size = Height/8;

X=(ClientWidth-Canvas->TextWidth("C++ Builder"))/2;

Y=(ClientHeight-Canvas->TextHeight("C"))/2;

Canvas->TextOut(X,Y,"C++ Builder");

}

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

void __fastcall TForm1::FormResize(TObject *Sender)

{

// очистити форму

Form1->Canvas->Brush->Color=Form1->Color;

Form1->Canvas->FillRect(Rect(0,0,ClientWidth,ClientHeight));

// виклик методу FormPaint

FormPaint(Form1);

}

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

 

 

Приклад. Побудувати графік функції y= на проміжку [0,25].

Текст модуля наведено нижче. Графік будується на канві форми.

 

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

 

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

#include <math.h>

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

// Функція, графік якої потрібно побудувати

float f(float x)

{

return 2*sin(x)*exp(x/5);

}

const char * FN="2*Sin(x)*exp(x/5)";

 

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

 

void __fastcall TForm1::FormPaint(TObject *Sender)

{

// будує графік функції

float x1,x2; // межі для аргумента функції

float y1,y2; // межі для значень функції

float x; // аргумент функції

float y; // значення функції в точці x

float dx; // приріст аргумента

int l,b; // левий нижній кут області побудови графіка

int w,h; // ширина і висота області побудови графіка

int mx,my; // масштаб по осях X і Y

int x0,y0; // точка - початок координат

 

// область побудови графіка

l=20; // X - координата лівого нижнього кута

b=ClientHeight-20; // Y - координата лівого нижнього кута

h=ClientHeight-40; // висота

w=ClientWidth-40; // ширина

 

x1=0; // нижня межа прожімку для аргумента

x2=25; // верхня межа прожімку для аргумента

dx=0.01; // крок для аргумента

 

// знаходження максимального і мінімального значення

// функції на відрізку [x1,x2]

y1=f(x1); // мінімум

y2=f(x1); // максимум

x=x1+dx;

do

{ y = f(x);

if (y < y1) y1=y;

if (y > y2) y2=y;

x=x+dx; }

while (x<=x2);

 

// знайдемо масштаб

my=h/abs(y2-y1); // масштаб по осі Y

mx=w/abs(x2-x1); // масштаб по осі X

 

// початок системи координат

x0=l;

y0=b-abs(floor(y1*my));

// осi

Canvas->Pen->Color=clGreen;

Canvas->MoveTo(l,b);Canvas->LineTo(l,b-h);

Canvas->MoveTo(x0,y0);Canvas->LineTo(x0+w,y0);

Canvas->TextOut(l+5,b-h,FloatToStrF(y2,ffFixed,6,2));

Canvas->TextOut(l+5,b,FloatToStrF(y1,ffFixed,6,2));

// побудова графіка

x=x1;

do

{ y=f(x);

Canvas->Pixels[x0+floor(x*mx)][y0-floor(y*my)]=clRed;

x=x+dx; }

while (x<=x2);

Canvas->Font->Color=clPurple;

Canvas->TextOut(l+40,y0+60,FN);

 

}

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

void __fastcall TForm1::FormResize(TObject *Sender)

{

// очистити форму

Canvas->FillRect(Rect(0,0,ClientWidth,ClientHeight));

// побудувати графік

FormPaint(Form1);

}

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

 

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 377 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наглость – это ругаться с преподавателем по поводу четверки, хотя перед экзаменом уверен, что не знаешь даже на два. © Неизвестно
==> читать все изречения...

2648 - | 2219 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.