SetStyle & PocketPC...

SetStyle & PocketPC... - C#/.NET managed - Programmation

Marsh Posté le 15-03-2007 à 10:00:46    

Messieurs, mesdames, bonjour.
 
Mon problème est simple :
Je dois dévelloper une barre de chargement circulaire sur PocketPC.
Pour ce faire, je me suis inspiré de codes existants trouvés sur internet.
Et dans chacun de ces codes de création de composants,
ils utilisent la fonction 'SetStyle'.
 
Or cette fonction n'existe pas sur les PocketPC...
 
Y a t'il un moyen de la remplacer, ou de pouvoir l'utiliser ?
 
Merci d'avance.


---------------
Soon.
Reply

Marsh Posté le 15-03-2007 à 10:00:46   

Reply

Marsh Posté le 15-03-2007 à 11:23:38    

Elle fait quoi au juste cette méthode ?

Reply

Marsh Posté le 15-03-2007 à 12:05:45    

Trouvé sur les docs MSDN :
 
Control.SetStyle Method :
Sets the specified style bit to the specified value

 
Le problème étant que je n'arrive pas à fixer la valeur de ces 'styles bits' sans utiliser cette méthode :/
 
Portion de mon code qui ne marche pas (si ça peut aider) :
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.ResizeRedraw, true);
SetStyle(ControlStyles.SupportsTransparentBackColor, true);


---------------
Soon.
Reply

Marsh Posté le 15-03-2007 à 14:43:00    

Bon, y'a clairement pas assez d'infos là.
 
Pkoi t'en a besoin ? Pour quoi faire ?

Reply

Marsh Posté le 15-03-2007 à 14:56:27    

Merci de te pencher sur mon problème :]
 
J'ai le code C# d'une barre de chargement circulaire,
que j'arrive parfaitement à faire fonctionner sur une appli Windows normale.
Mais je dois porter cette barre de chargement sur une appli PocketPC.
 
Or, certaines fonctions, comme SetStyle, n'existent pas sur PocketPC.
Et quand je commente les lignes correspondantes (celles citées au dessus), ma barre de chargement ne s'affiche pas...
j'en ai donc déduit qu'elles devaient être essentielles au bon fonctionnement.
 
J'aimerais savoir si il y a un équivalent de cette fonction, ou un moyen de l'utiliser,
afin de pouvoir faire fonctionner ma barre de chargement.


Message édité par Evil_Ifrit le 15-03-2007 à 15:07:14

---------------
Soon.
Reply

Marsh Posté le 15-03-2007 à 15:23:29    

ben refait tout à la main, ce sera plus simple...
 
je voulais te poster un exemple que j'ai écrit en vitesse, mais y'a pas de FillPie() sur PocketPC, et ça me lourde de chercher un moyen de le dessiner à la main du coup. mais ça se torche en quelques minutes...

Reply

Marsh Posté le 15-03-2007 à 15:25:09    

Code qui marche pas sur PocketPC, mais pas compliqué à refaire proprement (virer les Brush et mettre Color à la place, et remplacer le FillPie par un truc qui marche sur PocketPC... j'imagine un FillEllipse par dessus lequel on dessine un polygone effaçant tout de dont on n'a pas besoin :/

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. namespace MagicProgressBar
  9. {
  10.     public partial class Circular : UserControl
  11.     {
  12.         private ulong min = 0;
  13.         private ulong max = 100;
  14.         private ulong value = 0;
  15.         public ulong Min
  16.         {
  17.             get
  18.             {
  19.                 return this.min;
  20.             }
  21.             set
  22.             {
  23.                 if (value > this.max) throw new OverflowException("Min value can't be bigger than Max value" );
  24.                 if (value > this.value) throw new OverflowException("Min value can't be bigger than current value" );
  25.                 this.min = value;
  26.             }
  27.         }
  28.         public ulong Max
  29.         {
  30.             get
  31.             {
  32.                 return this.max;
  33.             }
  34.             set
  35.             {
  36.                 if (value < this.max) throw new OverflowException("Max value can't be lower than Min value" );
  37.                 if (value < this.value) throw new OverflowException("Max value can't be lower than current value" );
  38.                 this.max = value;
  39.             }
  40.         }
  41.         public ulong Value
  42.         {
  43.             get
  44.             {
  45.                 return this.value;
  46.             }
  47.             set
  48.             {
  49.                 if (value > this.max) throw new OverflowException("Current value can't be bigger than Max value" );
  50.                 if (value < this.min) throw new OverflowException("Current value can't be lower than Min value" );
  51.                 this.value = value;
  52.             }
  53.         }
  54.         public Circular()
  55.         {
  56.             InitializeComponent();
  57.         }
  58.         protected override void OnPaint(PaintEventArgs e)
  59.         {
  60.             base.OnPaint(e);
  61.             Pen p = new Pen(Brushes.Black, 1f);
  62.             e.Graphics.FillPie(Brushes.Red, new Rectangle(this.ClientRectangle.X, this.ClientRectangle.Y, this.ClientSize.Width - 1, this.ClientSize.Height - 1), 0f, (this.min < this.max) ? (360 * (this.value - this.min) / (this.max - this.min)) : 0);
  63.             e.Graphics.FillEllipse((new Pen(this.BackColor)).Brush, new Rectangle(this.ClientRectangle.X + 30, this.ClientRectangle.Y + 30, this.ClientSize.Width - 59, this.ClientSize.Height - 59));
  64.             e.Graphics.DrawEllipse(p, new Rectangle(this.ClientRectangle.X, this.ClientRectangle.Y, this.ClientSize.Width - 1, this.ClientSize.Height - 1));
  65.             e.Graphics.DrawEllipse(p, new Rectangle(this.ClientRectangle.X + 30, this.ClientRectangle.Y + 30, this.ClientSize.Width - 59, this.ClientSize.Height - 59));
  66.         }
  67.     }
  68. }

Reply

Marsh Posté le 15-03-2007 à 15:29:01    

http://magicbuzz.multimania.com/files/moche.png
 
C'est très laid mais bon, ça donne une idée de ce qu'on peut faire en 5 minutes, plutôt que de chercher des heures à faire marcher un truc pas prévu pour ce qu'on veut faire.


Message édité par MagicBuzz le 15-03-2007 à 15:30:13
Reply

Marsh Posté le 15-03-2007 à 15:41:37    

Whaho, merci beaucoup MagicBuzz :love:


Message édité par Evil_Ifrit le 15-03-2007 à 15:41:55

---------------
Soon.
Reply

Marsh Posté le 15-03-2007 à 15:54:33    

T'es prévenu hein ! Ca marche pas sous PocketPC.
Y'a pas grand chose à changer, mais notamment le FillPie marche pas, donc faut se faire chier à faire un FillElipse et virer toute ce qui n'est pas dans la zone désirée... Pas compliqué en soit mais bon...

Reply

Marsh Posté le 15-03-2007 à 15:54:33   

Reply

Marsh Posté le 15-03-2007 à 16:06:22    

Ouaip, je suis en train de faire ça :]
 
Encore merci.


Message édité par Evil_Ifrit le 15-03-2007 à 16:06:31

---------------
Soon.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed