In questi esempi di codice, vedremo come realizzare una barra, o meglio un testo posizionato in alto dello schermo, che scorre da destra a sinistra, con il testo che rimane in primo piano davanti ad ogni applicazione. Inoltre tramite la tecnica del Drag and Drop, seleziona e trascina, potremmo spostare la barra.
Il progetto è di tipo “Windows Application”, con il linguaggio di programmazione C# e la versione .Net 9
Dopo aver creato un nuovo progetto, seguendo queste caratteristiche, impostiamo a livello di class, delle variabili che saranno utilizzate nelle varie funzioni.
Le variabili permetteranno di gestire il testo, la formattazione ed il relativo spostamento.
Di seguito si riporta il frammento di codice delle suddette operazioni.
C#
private string testoDaVisualizzare = "Questo è un testo che scorre in una barra con direzione da destra a
sinistra.";
private int posizioneTesto;
private Timer timer;
private Font textFont = new Font("Segoe UI", 16, FontStyle.Bold);
private SizeF textSize;
private bool dragging = false;
private Point
dragCursorPoint;
private Point dragFormPoint;
Negli eventi della form, in particolare nell’evento “OnPaint”, andremo a ridefinire l’aspetto grafico, ossia il testo, che dovrà essere spostato in base al tempo impostato nella classe Timer, e ridefinire graficamente il tutto.
Mentre gli eventi “OnMouseDown”, “OnMouseUp” e “OnMouseMove”, gestiamo lo spostamento del testo.
Di seguito si riporta il frammento di codice delle suddette operazioni.
C#
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawString(testoDaVisualizzare, textFont, Brushes.White, posizioneTesto, 5);
}
protected override void OnMouseDown(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
dragging = true;
dragCursorPoint = Cursor.Position;
dragFormPoint = this.Location;
}
base.OnMouseDown(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (dragging)
{
Point diff = Point.Subtract(Cursor.Position, new Size(dragCursorPoint));
this.Location = Point.Add(dragFormPoint, new Size(diff));
}
base.OnMouseMove(e);
}
protected override void OnMouseUp(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
dragging = false;
}
base.OnMouseUp(e);
}
Siamo giunti alla fine della stesura del codice, non resta che scrivere il codice per gestire lo spostamento del testo ed aspetti di formattazione della form. Nel costruttore della form, impostiamo alcune proprietà della form. Per indicare l’aspetto, posizione ed altro. La formattazione del testo, e tramite la classe Timer, gestire lo spostamento del testo in base ad un certo numero di millisecondi.
Di seguito si riporta il frammento di codice delle suddette operazioni.
C#
public Form1()
{
InitializeComponent();
// Calcola la dimensione del testo
using (Graphics g = CreateGraphics())
{
textSize =
g.MeasureString(testoDaVisualizzare, textFont);
}
//Setto proprietà della form per la posizione e
formattazione
this.FormBorderStyle = FormBorderStyle.None;
this.TopMost = true;
this.BackColor = Color.Black;
this.ForeColor = Color.White;
this.StartPosition = FormStartPosition.Manual;
this.Location = new Point(0, 0);
this.Size = new Size(Screen.PrimaryScreen.Bounds.Width,
(int)textSize.Height + 10);
//Applico uno sfondo trasparente
this.BackColor
= Color.Magenta; // colore da rendere trasparente
this.TransparencyKey = Color.Magenta;
this.DoubleBuffered = true;
//Imposta posizione iniziale del
testo
posizioneTesto = this.Width;
//Timer per animazione
timer = new Timer();
timer.Interval = 30; // velocità dello scorrimento
timer.Tick += (s, e) =>
{
posizioneTesto -= 2;
if
(posizioneTesto < -textSize.Width)
posizioneTesto = this.Width;
this.Invalidate();
// forza il
ridisegno
};
timer.Start();
}
Nessun commento:
Posta un commento