2011-10-31 2 views
1

Je crée un jeu C#, qui est une nouvelle langue pour moi.Panneau rotatif en C#

Je souhaite faire pivoter un panneau en maintenant une touche enfoncée sur le clavier. Lorsque la clé est relâchée, le panneau doit cesser de tourner. J'ai regardé sur Internet et j'ai trouvé GDI + mais je ne comprends pas très bien. C'est le site Web: http://www.bobpowell.net/drawing_an_image.htm

J'ai lu sur le GDI + mais je ne sais pas comment l'utiliser dans mon cas où j'ai déjà le panneau dans le projet et comment l'ajouter.

Ceci est le code pour la rotation mais tout est souligné quand je le mets dans mon programme.

mx.Rotate(-30); 
g.Transform = mx; 
g.DrawImage(img,new Point(100,50)); 

Je ne comprends pas vraiment ce que les moyens ligne mx.rotate, ni comment je le mettre à jour pour obtenir la rotation alors que la touche est enfoncée.

Quelqu'un peut-il me dire ce qui ne va pas?

J'utilise Visual Studio 2008.

+0

Quelle est votre variable 'mx'? – Connell

+10

Je ne comprends jamais comment tant de personnes nouvelles à C# finissent par essayer de faire un jeu ... c'est comme essayer de tomber avant d'avoir escaladé la montagne – musefan

+3

@musefan, alors que je suis d'accord avec vos sentiments, je soupçonne que ça a quelque chose à voir avec l'attrait d'avoir un jeu à la fin de votre travail acharné, plutôt qu'une application de téléphone/adresse plus banale. –

Répondre

1

vous manque une ligne du code d'origine:

Matrix mx = new Matrix(); 

Ajouter à votre code, et cela devrait fonctionner. Cela va dessiner votre image à un angle, tout comme dans le document original. Si vous voulez que l'utilisateur voie le panneau en rotation, il est probablement préférable d'utiliser une minuterie pour incrémenter l'angle de rotation et redessiner.

+0

Oui mais Im essayant d'ad une image d'un dossier: C'est le code pour obtenir l'image et la tournant. Mais tout est souligné et avec des erreurs. Voici le code avec les erreurs: https://lh4.googleusercontent.com/-fTuFv3ByByY/TrAFhonVAxI/AAAAAAAACAQ/LNuXD0tKJgM/s696/Capture.jpg –

+0

Comme l'a dit @Mickey, il vous manquait une déclaration d'espace de noms. Si vous avez Visual Studio, dans la plupart des cas, vous pouvez simplement placer le curseur sur le type non résolu et cliquer sur Shift-Alt-F10 - vous obtiendrez une invite avec une liste des espaces de noms correspondants, s'il y en a liste actuelle des références. Si vous préférez les souris aux claviers, cliquez sur le petit rectangle bleu qui apparaît et vous obtiendrez les mêmes options. –

2

Vous avez eu quelques erreurs dans votre code. Voici un exemple de dessin de l'image pivotée à partir de l'événement Paint.

private void Form1_Paint(object sender, PaintEventArgs e) { 
     Matrix mx = new Matrix(); 
     Image img = Image.FromFile("c:\\img\\your-image.png"); 

     mx.Rotate(-30); 
     e.Graphics.Transform = mx; 
     e.Graphics.DrawImage(img, new Point(100, 100)); 
    } 
+0

still 1 erreur: Erreur Le type ou le nom de l'espace de noms 'Matrix' est introuvable (vous manque une directive using ou une référence d'assembly?) –

+1

Il vous manque l'instruction using pour System.Drawing.Drawing2D – Mickey

+0

Merci :) Ça a marché. S'il vous plaît laissez ce fil ouvert, peut-être que je vais avoir besoin d'aide. :) –