Dev’
[WP7] Tout savoir sur la gestion des images
0Un très rapide post pour partager le lien vers un excellent article de Stefan Wick sur l’optimisation et la gestion des images sur Windows Phone 7 : http://blogs.msdn.com/b/swick/archive/2011/04/07/image-tips-for-windows-phone-7.aspx
En particulier il nous présente, bien entendu les classiques BitmapCreateOptions de la classe BitmapImage pour choisir un chargement/décodage à la demande ou immédiat.
Mais aussi le PictureDecoder, qui permet de décoder une image dans la résolution voulue, et donc de gagner en vitesse et empreinte mémoire ! Malheureusement, celui ci ne sait décoder que les JPG, et pas les PNG…
Une dernière chose, à laquelle je me suis heurté lors du développement du Tile Toolkit : le décodage d’image ne peut se faire QUE sur le thread UI et c’est fort dommage…
Tile Toolkit for Windows Phone 7
0
English readers, you’ll find the link to Codeplex (where everything about the projet is written in English), at the end of this post.
Envie d’avoir une belle tuile avec un compteur comme celles du systèmes ?
De générer un contenu de tuile dynamiquement depuis C# avec un peu de composition graphique ? Idéalement le tout décrit en XAML ?
Ou encore d’utiliser des tuiles dans l’UI de votre appli ?
Je viens de publier sur Codeplex une petite (20Ko) librairie Open source (MS-PL) qui permet tout ça !
Le but du jeu était à la base de permettre à mes copains développeurs WP7 d’avoir des tuiles identiques au pixel-près à celles des mails/SMS, mais j’ai un petit peu dévié dans le scope et la lib permet de générer une tuile avec le contenu de votre choix, le tout décrit en XAML.

Elle est livrée avec un template de Tile identique aux tuiles mails/SMS. Je suis ouvert aux feature-request et rapports de bugs, bien évidemment.
En espérant vous rendre service
, vous trouverez le binaire et le sample (dans le code source) sur CodePlex.
Links
- Codeplex project home : http://wp7tiletoolkit.codeplex.com/
- NuGet project page : http://nuget.org/packages/Ree7.WPTileToolkit
- NuGet command line :
-
PM> Install-Package Ree7.WPTileToolkit
Désactiver le lock screen sous Windows Phone 7
0
Windows Phone 7 n’est pas multi-tâche (du moins pour les développeurs tiers), ça vous le saviez déjà. Mais disons que vous souhaitez développer une application qui occupe le téléphone un long moment sans interaction de l’utilisateur avec l’écran (ce qui aurait pu être une tâche de fond sous WM6.5 ou Android mais je vais m’éloigner de mon sujet…) : vous allez rencontrer un problème, c’est que le téléphone va se mettre en veille et tombstonner votre application.
Cela peut être fort gênant si vous développez une application de musique (radio), ou vidéo (bien que si vous utilisez MediaElement, les choses ont été bien faites et la lecture d’un média inhibe le lockscreen), ou encore une application de tracking GPS (#ridetracker, projet WP7 à venir sur ce blog).
Sachez que vous pouvez inhiber la veille du téléphone de deux façons :
- Microsoft.Phone.Shell.PhoneApplicationService.Current.ApplicationIdleDetectionMode = Microsoft.Phone.Shell.IdleDetectionMode.Disabled
Permet à votre application de ne pas se faire tombstonner quand le téléphone se met en veille, en clair votre application tourne derrière le lockscreen. C’est le comportement le plus proche d’un thread d’arrière plan. - Microsoft.Phone.Shell.PhoneApplicationService.Current.UserIdleDetectionMode = Microsoft.Phone.Shell.IdleDetectionMode.Disabled
Permet de désactiver purement et simplement le lockscreen !
Tant que j’y suis, PhoneApplicationService contient une autre propriété intéressante : Microsoft.Phone.Shell.PhoneApplicationService.Current.StartupMode, qui permet de savoir si vous êtes dans une nouvelle instance de l’application ou bien si vous êtes réssucité d’un état tombstonné.
[English version below]
[SL/WP7] Snippet nprop
0
Avouez-le, vous en avez plein vos DataContext, des propriétés bêtes et méchantes qui font appel à une fonction NotifyPropertyChanged. [ Pour ceux du fond près du radiateur, dans une UI Silverlight, l'objet contexte de la page, s'il implémente INotifyPropertyChanged, possède un event PropertyChanged qui permet de signifier à Silverlight que de la valeur d'une propriété à changé et qu'il est temps de mettre à jour les éléments de l'UI attachés à cette propriété. ]
Nativement, dans Visual Studio nous avons à notre disposition prop et propdp, bien utiles dans la vie de tous les jours du développeur Silverlight pour créer propriétés et DependencyProperties sans trop avoir à taper du code purement répétitif. Par contre rien pour les propriétés déclenchant l’évènement PropertyChanged - sans doute car l’implémentation concrète d’INotifyPropertyChanged est laissée au développeur… bien que l’on fasse quasiement tous pareil.
Pour palier à ce manque je vous propose nprop, un snippet venant s’ajouter à votre IDE et qui vous permettra du temps dans vos développements
Elle s’utilise comme n’importe quel autre snippet, tapez juste nprop puis TAB et le code apparaitra en vous invitant à remplir les trous.
- Fichier d’installation automatique .vsi
- Fichier snippet nu à placer dans votre dossier %Documents%\Visual Studio 20xx\Code Snippets\Visual C#\My Code Snippets au cas où le fichier précédent poserait problème
Faire discuter C# et C/C++ (et d’autres)
2
[ Guide non exhaustif réalisé lorsque j'étais encore stagiaire
]
Cette exception m’a donné un peu de fil à retordre, je vais donc partager ma solution avec vous.
Dans le cadre d’un projet C#, il arrive qu’on ait besoin d’utiliser des libraires (.DLL) non managées. Pour l’impétrant ce n’est pas forcément une balade de santé… même en demandant à Google.
La problématique est la suivante : « J’ai trouvé un source C++ génial sur le net qui fait exactement ce que je veux, et j’aimerais l’utiliser dans mon application C#. »
Ceci dit cet article peut vous aider si vous cherchez simplement à utiliser une DLL quelconque en C# (sautez à l’étape deux).
Attention au compilateur C-+ de Visual Studio 2008
0
Je ne suis pas un grand expert C/C++ mais j’ai eu affaire à une chose étrange aujourd’hui, qui m’aura couté (et à d’autres) de longues heures.
Erreur de l’éditeur de lien : error LNK2019: unresolved external symbol « short __cdecl ga_population_seed(struct population_t *) »
Le contexte, une solution C/C++ principalement écrite en C, dont deux des projets sont une librairies (sortie en .lib) C (GAUL : Genetic Algorithm Utility Library pour ne pas la citer).
La compilation se passe sans heurts (ceci dit, nous avons du modifier un petit peu la version soit disant Windows de GAUL pour qu’elle fonctionne sous VS2008 – soucis de #define, etc… assez triviaux dans l’ensemble). Mais le linking est une catastrophe, impossible pour VS de trouver les fonctions définies dans le header de notre librairie. Diantre !
Et bien le souci vient de la configuration du projet par défaut sous Visual Studio. En effet celui ci nous propose de choisir entre un compilateur C, et un compilateur C++, mais son choix par défaut semble être un étrange et indigeste mix des deux !
Tentative d’explication :
- Le compilateur par défaut (qui accepte de compiler sans broncher) doit déclarer nos fonctions (dans les .obj) d’une maniere differente de celle attendue par le linker ( __cdecl blah-blah-blah)
La solution :
- Forcer le compilateur a utiliser le compilateur C++ (ou C suivant votre convenance)
- Corriger les erreurs levées par le compilateur (et ca peut etre long, dans notre cas GAUL utilise moult attributions de pointeurs sans cast, déclare des fonctions s’appelant new ou delete, … – environ 300 erreurs au total chez nous).
Et voila, ça devrait linker correctement maintenant !

Commentaires récents