locked
Dessiner des polygones dynamiquement sous WP8.1 RRS feed

  • Question

  • Bonjour à tous,

    Mon problème est très simple : après plusieurs heures de recherche et tentatives, je ne trouve pas comment dessiner dynamiquement des polygones en c#. J'ai exploité la piste de binder une pointcollection à un objet polygon xaml mais ça n'a pas abouti et mon but serait si possible de ne pas du tout passer par le xaml.

    Des pistes ?

    Merci d'avance, Atanakar.

    mercredi 10 décembre 2014 21:37

Réponses

Toutes les réponses

  • Bonjour,

    Si vous ne voulez pas passer par le vectoriel (xaml), il vous reste dans ce cas la possibilité de dessiner dans un bitmap.

    Il vous faut pour cela utiliser WriteableBitmap et je vous conseille d'ajouter le WriteableBitmapEx, projet Open Source.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Proposé comme réponse Teodora Sharkova jeudi 11 décembre 2014 15:34
    • Marqué comme réponse Atanakar jeudi 11 décembre 2014 16:47
    jeudi 11 décembre 2014 07:59
  • Merci !

    J'ai cependant encore un problème : je n'arrive pas à dessiner :(

    Voici mon code (tiré d'un exemple sur le site de telechargement de WriteableBitmapEx) :

    xaml :

    <Grid Name="myGrid">
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
            </Grid.RowDefinitions>
            <Image Name="ImageControl" Grid.Row="0" />
            <Button Grid.Row="1" Content="DRAW !" HorizontalAlignment="Center" Tapped="Button_Tapped"/>
            <TextBlock Grid.Row="2" Text="{Binding classString}" HorizontalAlignment="Center"/>
        </Grid>


    c# :

    // Initialize the WriteableBitmap with size 512x512 and set it as source of an Image control
                WriteableBitmap writeableBmp = BitmapFactory.New(512, 512);
                ImageControl.Source = writeableBmp;
                writeableBmp.GetBitmapContext();
    
                // Clear the WriteableBitmap with white color
                writeableBmp.Clear(Colors.White);
    
                // Set the pixel at P(10, 13) to black
                writeableBmp.SetPixel(10, 13, Colors.Black);
    
                // Get the color of the pixel at P(30, 43)
                Color color = writeableBmp.GetPixel(30, 43);
    
                // Green line from P1(1, 2) to P2(30, 40)
                writeableBmp.DrawLine(1, 2, 30, 40, Colors.Green);
    
                // Blue anti-aliased line from P1(10, 20) to P2(50, 70)
                writeableBmp.DrawLineAa(10, 20, 50, 70, Colors.Blue);
    
                // Black triangle with the points P1(10, 5), P2(20, 40) and P3(30, 10)
                writeableBmp.DrawTriangle(10, 5, 20, 40, 30, 10, Colors.Black);
    
                // Red rectangle from the point P1(2, 4) that is 10px wide and 6px high
                writeableBmp.DrawRectangle(2, 4, 12, 10, Colors.Red);
    
                // Filled blue ellipse with the center point P1(2, 2) that is 8px wide and 5px high
                writeableBmp.FillEllipseCentered(2, 2, 8, 5, Colors.Blue);
    
                // Closed green polyline with P1(10, 5), P2(20, 40), P3(30, 30) and P4(7, 8)
                int[] p = new int[] { 10, 5, 20, 40, 30, 30, 7, 8, 10, 5 };
                writeableBmp.DrawPolyline(p, Colors.Green);
    

    Cependant cela ne dessine rien ...

    Voyez-vous d'ou vient le probleme ?

    • Modifié Atanakar jeudi 11 décembre 2014 22:06
    jeudi 11 décembre 2014 16:47