Este efecto es logrado simplemente dibujando lineas desde el centro de una forma hasta llenar la pantalla, se forman estos símbolos por la forma en la que estan dibujadas las líneas (no completamente en diagonal como sería lo ideal)
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// Calcular el centro del área de dibujo
CentroX = ClientWidth / 2;
CentroY = ClientHeight / 2;
this->DoubleBuffered = true;
}
void __fastcall TForm1::FormPaint(TObject *Sender)
{
int Contador = 0;
// Líneas con trazo discontinuo
Canvas->Pen->Style = psSolid;//psDot;//psDashDotDot;;//psDashDot;//psDash;
Canvas->Pen->Color = clBlack;
// Recorrer toda la anchura del área de dibujo
while (Contador < ClientWidth) {
// Trazando líneas desde el centro
// hasta los bordes superior e inferior
Canvas->MoveTo(CentroX, CentroY);
Canvas->LineTo(Contador, 0);
Canvas->MoveTo(CentroX, CentroY);
Canvas->LineTo(Contador, ClientHeight);
Contador += 4; // Incrementar el contador
}
Contador = 0; // Contador de nuevo a cero
// Para recorrer la altura del área de dibujo
while (Contador < ClientHeight)
{
// Trazando líneas desde el centro
// hasta los bordes izquierdo y derecho
Canvas->MoveTo(CentroX, CentroY);
Canvas->LineTo(0, Contador);
Canvas->MoveTo(CentroX, CentroY);
Canvas->LineTo(ClientWidth, Contador);
Contador += 5; // Incrementar el contador
}
}
void __fastcall TForm1::FormResize(TObject *Sender)
{
//Si la forma se redimensiona actualizar todo
//a sus nuevas dimensiones
Invalidate();
}
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Invalidate();
CentroX = X;
CentroY = Y;
FormPaint(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if (Shift.Contains(ssLeft))
FormMouseDown(Sender, 0, Shift, X, Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key == 37)
FormMouseDown(Sender, 0, Shift, (CentroX - 5), CentroY);
if (Key == 38)
FormMouseDown(Sender, 0, Shift, (CentroX), (CentroY - 5));
if (Key == 39)
FormMouseDown(Sender, 0, Shift, (CentroX + 5), CentroY);
if (Key == 40)
FormMouseDown(Sender, 0, Shift, (CentroX), (CentroY + 5));
}


No hay comentarios:
Publicar un comentario