IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

WPF: Window Ressource et DrawingBrush viewport, comment changer taille de viewport ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de coco1397
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 58
    Par défaut WPF: Window Ressource et DrawingBrush viewport, comment changer taille de viewport ?
    Bonjour,

    Voilà, je galère depuis maintenant 1h sur un problème et après avoir tenté plusieurs solutions, ça ne fonctionne pas comme je veux.

    Alors j'aimerais afficher une grille 3x3, 4x4 ou 5x5 pour jouer au morpion, dépend du choix de l'utilisateur, du coup j'ai ça dans le fichier XAML de ma fenêtre de jeu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <Window.Resources>
    		<DrawingBrush x:Name="DrawBr" x:Key="Checkerboard"  Stretch="Fill" TileMode="Tile" Viewport="0,0,0.333,0.333" >
    			<DrawingBrush.Drawing>
    				<DrawingGroup>
                        <GeometryDrawing Brush="#ffffff">
                            <GeometryDrawing.Geometry>
                                <RectangleGeometry Rect="0,0,1,1" />
                            </GeometryDrawing.Geometry> 
    						<GeometryDrawing.Pen>
                               <Pen Brush="Black" Thickness="0.02"/>
                            </GeometryDrawing.Pen>
                        </GeometryDrawing>   
    				</DrawingGroup>
    			</DrawingBrush.Drawing>
    		</DrawingBrush
     
    	</Window.Resources>
    Quand je fais ça, j'ai une grille 3x3 qui apparaît. Quand je mets 0.25 à la place des 0.333 dans le Viewport, j'ai une grille 4x4, etc...

    Voilà ce qui se passe :

    Nom : prob_projetp1.PNG
Affichages : 736
Taille : 8,0 Ko

    Mais si je change mes valeurs dynamiquement dans la partie C# de ma fenêtre, il n'affiche plus ma grille...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int n = nbCase;
    DrawingBrush dw = (DrawingBrush)Resources["Checkerboard"];
    dw.Viewport = new Rect(0, 0, 1 / n, 1 / n);
    J'ai une fenêtre blanche mais ma grille fonctionne en arrière plan car j'arrive à jouer et à aligner les croix et le ronds:
    Nom : prob_projetp1_2.PNG
Affichages : 487
Taille : 7,2 Ko


    Comment pourrais-je faire pour reafficher ma grille ?

    Merci d'avance pour votre aide !

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    Bonjour
    il y a de nombreux ratés dans ton code :
    1 / erreur sur passage en double (1.0 au lieu de 1)
    2 / mise à jour du panel

    code revu et corrigé :code

    code xaml du form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <Window x:Class="WpfGridBrush.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <DrawingBrush x:Name="DrawBr" x:Key="Checkerboard"  
                          Stretch="Fill" 
                          TileMode="Tile" Viewport="0,0,0.25,0.25" >
                <DrawingBrush.Drawing>
                    <DrawingGroup>
                        <GeometryDrawing Brush="#ffffff" >
                            <GeometryDrawing.Geometry>
                                <RectangleGeometry Rect="0,0,1,1" />
                            </GeometryDrawing.Geometry>
                            <GeometryDrawing.Pen>
                                <Pen Brush="Black" Thickness="0.02"/>
                            </GeometryDrawing.Pen>
                        </GeometryDrawing>
                    </DrawingGroup>
                </DrawingBrush.Drawing>
            </DrawingBrush>
    	</Window.Resources>
         <Grid>
            <Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>
            <StackPanel 
                Grid.Row="0"
                Orientation="Vertical"  >
                <TextBox x:Name="tbCases" Width="120" Text="5"/>
                <Button x:Name="btnValider" Content="valider" Click="btnValider_Click"/>                
            </StackPanel>
            <StackPanel 
                Grid.Row="1"
                x:Name="layoutPnl"
                Width="350" Height="350"
                Background="{StaticResource Checkerboard}">
            </StackPanel>
        </Grid>
    </Window>
    code behind.cs du form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     public partial class MainWindow : Window
        {
            )public MainWindow()
            {
                InitializeComponent();
            }
     
            private void btnValider_Click(object sender, RoutedEventArgs e)
            {
                int n = Convert.ToInt32(this.tbCases.Text);
                DrawingBrush dw = (DrawingBrush)Resources["Checkerboard"];
                //erreur sur passage en double (1.0 au lieu de 1)
                dw.Viewport = new Rect(0, 0, 1.0 / n, 1.0 / n);
                //mettre à jour le panel
                this.layoutPnl.Background = dw;
            }
        }
    bon code...

  3. #3
    Membre actif Avatar de coco1397
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 58
    Par défaut
    C'était bien cela. Merci pour ton aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 2.X] comment changer taille de police dans un entry gtk3 python 2.7
    Par alito dans le forum GUI
    Réponses: 2
    Dernier message: 07/10/2014, 20h09
  2. Comment changer le mot de passe de session Windows ?
    Par jmjmjm dans le forum Langage
    Réponses: 0
    Dernier message: 13/11/2007, 14h11
  3. Windows Live Messenger : Comment changer le message perso ?
    Par MaTHieU_ dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 13/11/2007, 00h18
  4. Comment changer le thème et l'apparence de Windows ?
    Par QAYS dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 01/10/2007, 11h20
  5. Comment changer les sons de Windows ?
    Par leonard.morel dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 28/07/2005, 19h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo