Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [Vb.net]Aiuto per un gioco
Forum - C# / VB.NET - [Vb.net]Aiuto per un gioco

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Ciao a tutti sto creando un semplice giochino e vorrei sapere come posso oscurare il form tranne un piccolo cerchio intorno al puntatore del mouse.

In particolare il form dovrebbe rappresentare una stanza buia e non si dovrebbe vedere nulla tranne una piccola area delimitata da un cerchio che segue sempre la punta del mouse che rappresenterebbe una torcia


PM
Avatar
GN (Member)
Guru


Messaggi: 770
Iscritto: 30/04/2011

Up
1
Down
V
Segnala al moderatore
Postato alle 22:03
Mercoledì, 28/03/2012
Uhm siccome non hai nominato nessuna libreria grafica immagino che tu stia usando le GDI+ (il namespace system.drawing per capirci); la mia idea sarebbe quindi di generare un'immagine da codice, riempirla di nero, disegnare un cerchio di un colore qualsiasi con centro nella posizione del mouse, impostare quel colore come trasparente e poi disegnare l'immagine sopra la tua area di gioco. Ti faccio un esempio.
Codice sorgente - presumibilmente VB.NET

  1. 'supponiamo che tu stia usando come area di gioco un controllo PictureBox di nome pb:
  2.     Private Sub pb_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pb.MouseMove
  3.       Dim img As New Bitmap(pb.Width, pb.Height) 'inizializziamo un'immagine bitmap
  4.       Dim g As Graphics = Graphics.FromImage(img) 'inizializziamo la relativa grafica
  5.       g.Clear(Color.Black) 'riempiamo la superficie di nero
  6.       g.DrawEllipse(Pens.Blue, e.X - 5, e.Y - 5, 10, 10) 'disegnamo un cerchio blu nella posizione del mouse (in questo caso ha diametro 10 pixel)
  7.       img.MakeTransparent(Color.Blue) 'rendiamo trasparente il nostro cerchio
  8.       'supponiame che GameG sia la grafica del gioco, che potrebbe corrispondere per esempio a pb.CreateGraphics()
  9.       GameG.DrawImage(img, 0, 0) 'e sovrapponiamogli la nostra immagine
  10.     End Sub


P.S. il codice non l'ho provato quindi non sono sicurissimo che funzioni.


PM
Usa i commenti per chiedere spiegazioni o ringraziare le risposte.