moin leute
wie war doch gleich der befehl um ein panel bewegen zu lassen?
am ende soll das programm eine kreuzung mit mehren autos dastellen welche um die kurve fahren.
habt ihr sonst noch ideen?
Hi PomBär,
mit Panel->Left++ oder Panel->Top++ lässt sich das Panel auf seinem Parent (i.a.die Form) bewegen.
Wenns aber um die Ecke gehen soll, müssten die Autos ja auch schräg dargestellt werden können.
Ich würde da lieber eine Paintbox nehmen und direkt auf dem Canvas rumpinseln, evt. mit einem Polygon, deren 4 Ecken jeweils neu errechnet werden, etwa so:
#define AutoWidth 10
#define AutoHeight 30
static Windows::TPoint points[10][4];
void TForm1::Auto(char Index,int X,int Y, double Alpha)
{
//zeichnet ein Auto auf einer Paintbox, löscht das bisher gezeichnete
// X;Y : der Mittelpunkt des Autos
// Alpha : Drehwinkel
double Radius1 = sqrt(pow(AutoWidth,2)+pow(AutoHeight,2));
double AlphaOrg = atan((double)AutoHeight / (double)AutoWidth);
double Alpha1 = AlphaOrg + Alpha;
double Alpha2 = M\_PI - AlphaOrg + Alpha;
double Alpha3 = AlphaOrg + Alpha + M\_PI;
double Alpha4 = 2.\*M\_PI - AlphaOrg + Alpha;
PaintBox1-\>Canvas->:stuck\_out\_tongue\_winking\_eye:en-\>Color = PaintBox1-\>Color;
PaintBox1-\>Canvas-\>Brush-\>Color = PaintBox1-\>Color;
PaintBox1-\>Canvas->:stuck\_out\_tongue\_winking\_eye:olygon(points[Index], 3);
PaintBox1-\>Canvas->:stuck\_out\_tongue\_winking\_eye:en-\>Color = clRed;
points[Index][0] = Point(X+Radius1\*sin(Alpha1),Y+Radius1\*cos(Alpha1));
points[Index][1] = Point(X+Radius1\*sin(Alpha2),Y+Radius1\*cos(Alpha2));
points[Index][2] = Point(X+Radius1\*sin(Alpha3),Y+Radius1\*cos(Alpha3));
points[Index][3] = Point(X+Radius1\*sin(Alpha4),Y+Radius1\*cos(Alpha4));
PaintBox1-\>Canvas-\>Brush-\>Color = clTeal;
PaintBox1-\>Canvas->:stuck\_out\_tongue\_winking\_eye:olygon(points[Index], 3);
}
Fil Ärvolk
wünscht Hans
moin leute
wie war doch gleich der befehl um ein panel bewegen zu lassen?
am ende soll das programm eine kreuzung mit mehren autos
dastellen welche um die kurve fahren.
habt ihr sonst noch ideen?