Pierre Belin
(3 commentaires, 12 articles)
Cet utilisateur n'a pas partagé les informations de son profil
Acceuil: http://www.ree7.fr
Articles par Pierre Belin
[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
Un thème Visual Studio reposant…
3
Depuis que je fais de l’informatique, j’ai toujours eu un faible pour les thèmes de couleur sombres, surtout quand il s’agit d’y passer la journée…
Visual Studio ne fait pas exception, et j’en profite pour glisser un lien vers le thème que j’utilise actuellement : Monokai.
Disponible aussi (en light) sur studiostyl.es
Adopt a WP7 : iPod to Zune how-to
0
Une fois n’est pas coutume je ne vais pas parler développement, mais donner quelques tips pour que votre adoption d’un Windows Phone 7 se passe bien.
Vous avez tout juste sorti votre nouveau téléphone de son coffret et jusque ici vous utilisiez un iPod/iPhone pour emmener votre musique avec vous ? Bien sur, avec le temps, le contenu de votre device siglé de la pomme est devenu une séléction du meilleur de votre collection musicale qui prendrait des lustres à refaire, hors de question de repartir de zéro !
La manipulation n’est pas si simple que cela, mais suivez le guide et vous pourrez retrouver votre bibliothèque sur votre Windows Phone ! (et réjouissez-vous, vous pourrez raffiner bien plus facilement votre collection musicale a l’avenir, contrairement à un iPod, WP7 sait SUPPRIMER un morceau de musique).
Note for my english-speaking readers, there’s no english version of this post so far (lack of time), but if you need one leave a comment and I’ll make one.
Composition d’image : rendre du XAML sous forme d’image [Update 12/2011]
2Voici un morceau de code qui pourront rendre service lors de développements Silverlight (3 et +, Windows Phone 7, …) : si vous avez besoin de générer une image dans votre application : à partir de Silverlight 3, la classe WriteableBitmap est à votre disposition et permet de créer une image pixel par pixel.
Elle est de transformer un arbre XAML en une image, seule ombre au tableau; cette classe est parfaite pour l’affichage à l’écran, en effet le contrôle Image est capable d’afficher un WriteableBitmap mais pour la sauvegarde c’est une autre paire de manche : nativement, Silverlight ne propose pas d’encodeur PNG ou JPEG pour exporter ce paquet de pixels.
Le code qui suit vous permettra de profiter de la praticité de Silverlight pour composer une image (à vous les superpositions alpha, le texte antialiasé positionné comme bon vous semble en quelques lignes, les layouts faciles à utiliser – grid, stackpanel, …) exportable en PNG non compressé (attention quand même du coup, et en passant merci à Joe Stegman pour son PNGEncoder).
Vous pourrez ensuite manipuler ces images comme bon vous semble, car deux formats de sorties sont disponibles, l’une en Stream et l’autre en Byte[]. Aucun problème pour les sérialiser (contrairement aux BitmapImage)
Code and english version of the post available below
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
[WP7] Missing CheckAccess()
0Une petite note technique pour ceux qui se demandaient où était passée Dispatcher.CheckAccess() dans les CTP de Windows Phone 7.
Cette primitive permet de savoir si le code courant tourne dans le thread d’UI ou pas, et donc si un BeginInvoke() est nécessaire ou pas.
Exemple, pour récupérer un setting de l’IsolatedStorage depuis n’importe quel thread :
public void GetSetting(string key, out object value)
{
if (Deployment.Current.Dispatcher.CheckAccess())
{
value = IsolatedStorageSettings.ApplicationSettings[key];
}
else
{
using (ManualResetEvent sync = new ManualResetEvent(false))
{
object _value = null;
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
_value = IsolatedStorageSettings.ApplicationSettings[key];
sync.Set();
});
sync.WaitOne();
value = _value;
}
}
}
Et bien CheckAccess() est toujours bien là dans la classe Dispatcher, même si l’Intellisense de Visual Studio ne vous la propose pas.
Rappel : Pour les débutants en multi-threading sous Silverlight, le seul Dispatcher auquel vous avez accès depuis un autre thread que l’UI est Deployment.Current.Dispatcher. Si vous essayez de taper directement dans le Dispatcher d’un FrameworkElement vous irez tout droit à la CrossThreadException
.
Source : Forums MSDN
Ready-made usual flavour HttpWebRequest for Windows Phone 7
3Si vous effectuez des portages d’applications .NET vers Silverlight ou Windows Phone 7, cette classe pourrait bien vous être utile.
En effet, dans Silverlight, les WebRequests sont asynchrones (c’est très bien !), seulement ce changement d’API peut causer de nombreuses modifications de code. C’est dans cette optique que j’ai crée cette classe C# : HttpWebRequestSync qui propose une interface au plus proche de ce qui existait avant.
Attention, pour le coup vous perdrez l’avantage des requêtes asynchrones et votre thread appelant sera bloqué pendant le déroulement de la requête, comme au bon vieux temps !
Tout retour de bug ou message de remerciement est le bienvenu, ce code est disponible sous licence LGPL.
If you’re looking forward to port .NET applications to Silverlight/Windows Phone 7, the following might interest you.
In Silverlight, the WebRequests are asynchronous (and that’s a good thing), but this change in the API can cause numerous changes in your code. That’s what lead me to write this C# class : HttpWebRequestSync featuring an interface as close as possible as what was there before.
Note that you’ll lose the advantage of asynchronous requests and that you’re thread will be locked waiting for the request to complete, ol’school style.
If you find any bug or just want to leave a ‘thank you’ not you’re welcome. This code is available under the LGPL license.

Commentaires récents