|
I bob c++ builder dasturining grafik imkoniyatlari 6
|
bet | 6/17 | Sana | 18.05.2024 | Hajmi | 0,95 Mb. | | #242188 |
Bog'liq I bob c builder dasturining grafik imkoniyatlari 6Xususiyatlar
|
Vazifasi
|
Name
|
Shrift nomi
|
Size
|
Shrift oʻlchami (punkt birligida)
|
Style
|
Belgining koʻrinishi.U oddiy,yoʻgʻon,yarim yoʻgʻon,kursiv boʻlishi mumkin.
fsBold – yarim yoʻgʻon
fsItalic – kursiv
fsUnderline – tagi chizilgan
fsStrikeOut – ustiga chizilgan
|
Color
|
Belgi rangi
|
Matnning eni va boʻyini ham koʻrsatish mumkin. Buning uchun TextWidth va TextHeight metodlaridan foydalaniladi. Quyida, forma sirtiga grafik rejimdagi matnni chiqarish dasturi keltirilgan:
void __fastcall TForm1::FormPaint(TObject *Sender)
AnsiString ms="Borland C++Builder";
TRect aRect;
int x,y;
aRect=Rect(0,0,ClientWidth,ClientHeight/2);
Canvas->Brush->Color=clWhite;
Canvas->FillRect(aRect);
aRect=Rect(0,ClientHeight/2,ClientWidth,ClientHeight);
Canvas->Brush->Color=clSkyBlue;
Canvas->FillRect(aRect);
-Canvas->TextWidth(ms))/2;y=(
ClientHeight-Canvas->TextHeight(ms))/2;
Canvas->Brush-> Canvas->Font->Name="Times New Roman";
Canvas->Font->Size=24;
Canvas->Font->Style=TFontStyles()<
x=(ClientWidth Style=bsClear;
Canvas->Font->Color=clBlack;
Canvas->TextOutA(x,y,ms); }
Keltirilgan dastur quyidagi natijani beradi:
1.6. Rasm. Matn chiqarish
Nuqta. Grafik rejimda formaning ixtiyoriy nuqtasini belgilash mumkin. Bu jarayon belgilangan nuqtani boshqa ranga oʻtkazish hisobiga amalga oshiriladi. Buning uchun Pixels metodidan foydalaniladi[1,12]. U TColor turidagi 2 oʻlchovli massivni tasvirlaydi:
Canvas->Pixels[10][10]=clRed;
Bu koʻrsatma formaning (10,10) koordinatasini qizil rangga boʻyaydi. Nuqta oʻlchami joriy grafik rejim oʻlchamidan kelib chiqadi. Grafik rejimda formaning maksimal koordinatalari ClientWidth va ClientHeight bilan aniqlanadi, Image komponentasining maksimal koordinatalari esa Width va Hieght bilan aniqlanadi. Formaning ishchi sohasi yuqori chapdan Pixels[0][0], quyi oʻngdan esa Pixels[ClientWidth – 1][ ClientHeight –1] elementlar bilan chegaralanadi. Quyida keltirilgan dastur forma grafik oʻlchamlarini avtomatik hisobga olgan holda funksiyaning grafigini chizishni bajaradi:
void __fastcall TForm1::FormPaint(TObject *Sender)\
at y1,y2;
float x;
Grafik();
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
TRect rct=Rect(0,0,ClientWidth,ClientHeight);
Canvas->FillRect(rct);
Grafik();
#include "math.h";
float f(float x){ return 2*sin(x)*exp(x/5); }
void TForm1::Grafik();
{ float x1,x2;
flofloat y;
float dx;
int l,b;
int w,h;
float mx,my;
int x0,y0;
l = 10;
b = Form1->ClientHeight-20;
h = Form1->ClientHeight-40;
w = Form1->Width-20;
x1=0;
x2=25;
x=x1;
dx=0.01;
y1=f(x);
y2=f(x);
do{
y=f(x);
if(y
if(y>y2) y2=y;
x+=dx;
}while(x<=x2);
my=(float)h/abs(y2-y1);
mx=w/abs(x2-x1);
x0=1+abs(x1*mx);
y0=b-abs(y1*my);
Canvas->MoveTo(x0,b);Canvas->LineTo(x0,b-h);
Canvas->MoveTo(l,y0);Canvas->LineTo(l+w,y0);
Canvas->TextOutA(x0+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
Canvas->TextOutA(x0+5,b,FloatToStrF(y1,ffGeneral,6,3));
x=x1;
do{
y=f(x);
Canvas->Pixels[x0+x*mx][y0-y*my]=clRed;
x+=dx;
}while(x<=x2);
|
| |