Code Bouton pour faire un nouveau Form1_Paint

Résolu
vb95 Messages postés 3473 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 30 avril 2024 - 12 juil. 2018 à 12:47
Whismeril Messages postés 19034 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 - 12 juil. 2018 à 19:12
Bonjour

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;

namespace Rubikcube
{
    public partial class Game : Form
    {
        ClassRubikCube rubikCube = new ClassRubikCube();
        ClassPoint3D cameraPosition = new ClassPoint3D(-1, 90, 90, 140);
        ClassAngles angles = new ClassAngles(0, 0, 0);
        ClassPoint3D viewer = new ClassPoint3D(-1, 0, 0, 500);
        int xcoor = 400;
        int ycoor = 100;

        public Game()
        {
            InitializeComponent();
           
        }
               
        private void Game_Paint(object sender, PaintEventArgs e)
        {
            PointF pt = new PointF(323,323);
            e.Graphics.TranslateTransform(xcoor, ycoor);
            rubikCube.DrawRubicube(e.Graphics, cameraPosition, angles, viewer);
            e.Graphics.ResetTransform();
        }


Ce code fonctionne très bien pour afficher sur ma Form un rubix's cube à son état initial .
C'est l'évènement Game_Paint qui se charge de l'afficher au démarrage du projet sur la Form elle-même

Maintenant je cherche à programmer un Bouton Reset qui remettrait le Rubix's Cube dans son état initial une fois que les manipulations ou un mélange ont été fait si on veut revenir au début du jeu ( ces manipulations sont fonctionnelles pour faire tourner les faces et le mélange me donne un Rubix's Cube mélangé )
Mais comment revenir à l'état initial du Rubix's cube ?
Je suis conscient qu'il faut réinitialiser les 4 objets rubiCube, cameraPosition, angles et viewer mais comment faire pour que ce même bouton Reset déclenche l'évènement Game_Paint pour afficher le Rubix's Cube initial

Merci pour vos réponses

1 réponse

Whismeril Messages postés 19034 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 656
12 juil. 2018 à 13:33
Bonjour

dans la méthode abonnée à l’événement Click de ton bouton, tu peux faire un truc comme ça
Game_Paint(this, new PaintEventArgs ());


Tu envoies le form en cours comme sender et un argument "neuf".
Comme tu ne te sers ni de l'un ni de l'autre dans Game_Paint() c'est pas important.

Tu pourrais même te contenter de
Game_Paint(null, nulll);

mais je trouve ça moche
0
vb95 Messages postés 3473 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 30 avril 2024 169
12 juil. 2018 à 14:12
bonjour Whis

 private void Game_Paint(object sender, PaintEventArgs e)
        {
            PointF pt = new PointF(323,323);
            g = e.Graphics;
            g.TranslateTransform(xcoor, ycoor);
            rubikCube.DrawRubicube(g, cameraPosition, angles, viewer);
            g.ResetTransform();
        }

        private void RESET_Click(object sender, EventArgs e)
        {
            Game_Paint(this, new PaintEventArgs());
        }


Cela me souligne en rouge PaintEventArgs()
Il faut un paramètre de type Graphics ( je peux mettre le g de 'évènement Game_Paint )mais je mets quoi pour le paramètre Rectangle : le paramètre Rectangle doit être le rectangle de la form Game je suppose

Merci

Là je vais faire des courses : je m'y remettrais plus tard
0
Whismeril Messages postés 19034 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 656
12 juil. 2018 à 15:33
Au temps pour moi tu te sers de e.....

Faut que j'essaye
0
Whismeril Messages postés 19034 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 656
12 juil. 2018 à 17:16
J'ai pas essayé mais à priori
this.Refresh();
force le formulaire à se redessiner
https://msdn.microsoft.com/en-us/library/system.windows.forms.control.refresh(v=vs.110).aspx
0
vb95 Messages postés 3473 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 30 avril 2024 169 > Whismeril Messages postés 19034 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024
Modifié le 12 juil. 2018 à 19:14
bonsoir Whis
Je suis partie sur une autre voie en mettant le dessin du rubix's cube dans une PictureBox et en gérant un Bitmap de celle-ci .
Cela me permet de gérer les mouvements ainsi que le mélange et la réinitialisation du Rubix's cube .
Voici le code
public partial class Game : Form
    {
        ClassRubikCube rubikCube;
        ClassPoint3D cameraPosition;
        ClassAngles angles;
        ClassPoint3D viewer;
        Bitmap MyBitmap;
        Graphics g;
        int xcoor = -180;
        int ycoor = -180;

        public Game()
        {
            InitializeComponent();
           
        }
        
        private void Game_Load(object sender, EventArgs e)
        {
            InitialiseRubicube();
           
        }

        // On remet le rubix's cube dans son état initial
        private void RESET_Click(object sender, EventArgs e)
        {
            InitialiseRubicube();
        }

        private void InitialiseRubicube()
        {
            rubikCube = new ClassRubikCube();
            cameraPosition = new ClassPoint3D(-1, 90, 90, 140);
            angles = new ClassAngles(0, 0, 0);
            viewer = new ClassPoint3D(-1, 0, 0, 500);
            MyBitmap = new Bitmap(GameRubicube.Width, GameRubicube.Height);
            g = Graphics.FromImage(MyBitmap);
            PointF pt = new PointF(GameRubicube.Width / 2, GameRubicube.Height / 2);
            g.TranslateTransform(xcoor, ycoor);
            rubikCube.DrawRubicube(g, cameraPosition, angles, viewer);
            g.ResetTransform();
            GameRubicube.Image = MyBitmap; 
        }
}



Je n'ai pas mis le code permettant le mélange ainsi que les différents mouvements car cela serait trop long .
Tout marche à la perfection là !

C'est ton This.Refresh() qui m'a donné l'idée car j'avais déjà utilisé ce principe pour les cases du Scrabble que j'ai fait en VB Net

Merci pour tout Whis !
0
Whismeril Messages postés 19034 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 656
12 juil. 2018 à 19:12
de rien
0
Rejoignez-nous