home *** CD-ROM | disk | FTP | other *** search
- #include <Windows.hpp>
- #include "pies.h"
-
- void __fastcall TAngles::Assign(TAngles Value);
- {
- StartAngle = Value.StartAngle;
- EndAngle = Value.EndAngle;
- }
-
- void __fastcall TAngles::SetStart(Integer Value);
- {
- if (Value != FStartAngle){
- FStartAngle = Value;
- Changed;
- }
- }
-
- void __fastcall TAngles::SetEnd(Value: Integer);
- {
- if (Value != FEndAngle){
- FEndAngle = Value;
- Changed;
- }
- }
-
- void __fastcall TAngles::Changed;
- {
- if (Assigned(FOnChange))
- FOnChange(Self);
- }
-
- TPie::TPie(TComponent* AOwner): TGrahpicControl(AOwner)
- {
- Width = 100;
- Height = 100;
- FPen = new TPen();
- FPen->OnChange = StyleChanged;
- FBrush = new TBrush();
- FBrush->OnChange = StyleChanged;
- FAngles = new TAngles();
- FAngles->OnChange = StyleChanged;
- FAngles->StartAngle = 180;
- FAngles->EndAngle = 90;
- }
-
- void __fastcall TPie::StyleChanged(TObject Sender);
- {
- Invalidate;
- }
-
- void __fastcall TPie::SetBrush(TBrush Value);
- {
- FBrush->Assign(Value);
- }
-
- void __fastcall TPie::SetPen(TPen Value);
- {
- FPen->Assign(Value);
- }
-
- void __fastcall TPie::SetAngles(TAngles Value);
- {
- FAngles->Assign(Value);
- Invalidate;
- }
-
- void __fastcall TPie::Paint()
- {
- Integer StartA, EndA;
- Integer midX, midY, stX, stY, endX, endY;
- Real sX, sY, eX, eY;
-
- StartA = FAngles->StartAngle;
- EndA = FAngles->EndAngle;
- midX = div(Width,2);
- midY = div(Height,2);
-
- sX = Cos((StartA / 180.0) * pi);
- sY = Sin((StartA / 180.0) * pi);
- eX = Cos((EndA / 180.0) * pi);
- eY = Sin((EndA / 180.0) * pi);
-
- stX = Round(sX * 100);
- stY = Round(sY * 100);
- endX = Round(eX * 100);
- endY = Round(eY * 100);
-
- Canvas->Pen = FPen;
- Canvas->Brush = FBrush;
- Canvas->Pie(0,0,
- Width,Height,
- midX + stX, midY - stY,
- midX + endX, midY - endY);
- }
-
-