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

Windows Presentation Foundation Discussion :

C# WPF graphique 2D


Sujet :

Windows Presentation Foundation

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 174
    Points : 38
    Points
    38
    Par défaut C# WPF graphique 2D
    Bonjour,

    Je développe une application WPF en C# en respectant le modele MVVM (j'utilise MVVMLight).
    Actuellement je cherche la meilleure solution pour réaliser un écran qui ressemblerait à l'image ci-dessous :
    Nom : synoptic_light.jpg
Affichages : 110
Taille : 40,1 Ko

    Sur cette représentation, j'ai 5 synoptiques les uns au dessus des autres, mais ce nombre de synoptiques est variable.
    Chaque synoptique est composé de gauche à droite :
    - d'une icone
    - puis de 3 zones distinctes séparées par les pointillés

    Les 3 zones en question affichent un bout de synoptique qui est statique mais dont la représentation dépend de certains paramètres du contexte mais ces zones doivent également contenir un composant permettant de modifier une valeur par les boutons + et -.
    Et cerise sur le gâteaux (et c'est ce qui me fait coincer), on doit pouvoir afficher sur ces synoptiques une barre verticale (en vert sur le schéma) qui se déplace en fonction de l'avancée d'un traitement.

    Initialement je partais dans l'idée de développer un UserControl pour représenter un synoptique :
    Nom : single_synoptic_light.jpg
Affichages : 84
Taille : 8,1 Ko

    Mais du coup je ne vois pas trop comment faire pour la barre verticale qui doit chevaucher tous les synoptiques.

    Cordialement

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    Citation Envoyé par aharel Voir le message
    Bonjour,


    Mais du coup je ne vois pas trop comment faire pour la barre verticale qui doit chevaucher tous les synoptiques.

    Cordialement
    La barre verticale qui chevauche les synoptiques (je suppose que ce sont des controls) doit être hébergé dans un control Canvas en dessous des synoptiques (le Canvas doit avoir le Z-INDEX le plus élevé et avoir son background transparent.
    Le tout sera "logé" dans le Grid du UserControl.
    code exemple simplié avec un timer dans le MainModel.
    1/ behind.cs du MainModel
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    sing System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ComponentModel;
    using System.Timers;
    namespace WpfAppCurseur
    {
        public class BaseModel:INotifyPropertyChanged
        {
     
            public event PropertyChangedEventHandler PropertyChanged;
            public void RaisePropChanged(string nameprop)
            {
                PropertyChangedEventHandler h = PropertyChanged;
                if (h != null)
                    h(this, new PropertyChangedEventArgs(nameprop));
            }
        }
        public class MainModel:BaseModel 
        {
            private Timer tmr;
     
            public MainModel()
            {
                val1 = 20; val2 = 50; val3 = 75;
                traitement = 0.0;
                tmr = new Timer();
                tmr.Interval = 100.0;
                tmr.Enabled = true;
                tmr.Elapsed += new ElapsedEventHandler(tmr_Elapsed);
            }
     
            void tmr_Elapsed(object sender, ElapsedEventArgs e)
            {
                Traitement += 5.0;
                if (traitement > 400)
                    traitement = 0;
            }
            private int val1;
            public int Val1
            {
                get { return val1; }
                set
                {
                    val1 = value; this.RaisePropChanged("Val1"); tmr.Start();  }
            }
            private int val2;
            public int Val2
            {
                get { return val2; }
                set { val2 = value; this.RaisePropChanged("Val2"); ; tmr.Start(); }
            } 
            private int val3;
            public int Val3
            {
                get { return val3; }
                set { val3 = value; this.RaisePropChanged("Val3"); ; tmr.Start(); }
            }
            private double traitement;
            public double Traitement
            {
                get { return traitement; }
                set { traitement = value; this.RaisePropChanged("Traitement"); }
            }
        }
    }
    2/ code xaml du UserControl
    Code XAML : 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
    <UserControl x:Class="WpfAppCurseur.MainControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="300" d:DesignWidth="300"
                >
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"></ColumnDefinition>
                <ColumnDefinition Width="*"></ColumnDefinition>
                <ColumnDefinition Width="*"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Button x:Name="Composant1" Content="{Binding Val1}" Grid.Column="0"></Button>
            <Button x:Name="Composant2" Content="{Binding Val2}" Grid.Column="1"></Button>
            <Button x:Name="composant3" Content="{Binding Val3}" Grid.Column="2"></Button>
            <Canvas x:Name="chart" Background="Transparent" 
                    Grid.Column="0" Grid.ColumnSpan="3" 
                    Grid.Row="0">
                <Line   
                    x:Name="mycursor"
                    Stroke="Red"
                    X1="{Binding Traitement}"  Y1="10"
                    X2="{Binding Traitement}"  Y2="400"
     
                  >
                </Line>
     
            </Canvas>
        </Grid>
    </UserControl>

    3/ code xaml du MainForm User:

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <Window x:Class="WpfAppCurseur.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfAppCurseur"
            Title="MainWindow" Height="350" Width="525">
        <Window.DataContext>
            <local:MainModel></local:MainModel>
        </Window.DataContext>
        <Grid>
            <local:MainControl/>
        </Grid>
    </Window>
    bon code...

Discussions similaires

  1. [WPF] Problèmes performance graphique LECTEUR GUITAR
    Par dfiad77pro dans le forum Windows Presentation Foundation
    Réponses: 16
    Dernier message: 25/04/2011, 23h58
  2. Graphiques 2D -3D : WPF ou composant tiers ?
    Par flamandier dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 13/12/2010, 03h50
  3. Le WPF nécessite une bonne caractéristique graphique, de même pour le FlowDocument
    Par randriano dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 16/06/2010, 10h00
  4. Applications graphiques fenêtrées: Winforms & WPF
    Par adiekmann dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 17/07/2007, 19h43
  5. WPF, Librairie graphique
    Par Oufti dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 20/06/2007, 10h27

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