Antoine Loos

Just another .Net Blog

This content shows Simple View


antoine

Dessiner sur l’application cartes de Windows 10

Depuis quelque jours Microsoft est en train de déployer sa mise à jours majeure Windows 10 Anniversary.

Et quelques fonctionnalités très intéressante font leurs apparition comme la possibilité de dessiner sur l’application cartes de Windows 10.

Ceci n’est pas un gadget car les possesseurs de Surface manquaient jusqu’à maintenant d’application “Stylus friendly”

Dans la petite animation plus haut j’étais par exemple en train de délimiter une zone pour trouver un appartement.

Il est possible de changer de vue de la camera et les tracés s’ajustent en fonction, il est également possible de connaitre très simplement les distances et de tourner la carte dans tout les sens, vraiment l’ergonomie est vraiment à l’honneur.

Ces fonctionnalités sont disponible dans cette application à partir de la version 5. 1608 donc il faut forcer un peu les misse à jour ou être patient pour l’obtenir.

Bref avec la nouvelle mise à jour et l’ajout de la suite Windows Ink il est enfin possible de profiter pleinement des possibilités du stylet sur la surface.

Merci Microsoft =)

20160816_143624

 

 



UWP MessageBox class

Certaines habitudes ont la vie dure quand on developpe depuis un petit moment sur une technologie aussi directive que .Net et WPF. On prend donc de bonnes ou de mauvaises habitudes comme par exemple faire ses sortie de Debug dans des MessageBox ce qui en WPF est très pratique.

Cette possiblité ayant disparue en UWP voici une petite classe statique qui permet de retrouver cet outils et de s’en servir comme avant. (chacun se sentira libre de juger de la pertinence ou du bien fondé de cette pratique) :

public class MessageBox
{
public static async void Show(string ex )
{
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
var dlg = new MessageDialog(ex);
await dlg.ShowAsync();
});

}
}

 

Je me sens un peu obligé de me justifier de donner ces petits trucs et astuces pas forcement recommandables mais voici une illustration que je trouve très parlante à  ce propos :

Design-VS-Experience

Ceci est également valable pour le developpement



UWP default border on ContentDialog

Je pense que la technologie UWP est une réelle avancée dans l’histoire du .Net et ajout beaucoup de choses indispensables pour ne pas perdre de temps lorsqu’on programme. Cependant Certains des controls UWP possèdent des propriétés par défaut qui sont franchement génantes dès qu’on veut presonnaliser un peu l’UI et qu’on ne souhaite pas intervenir avec Blend sur ce détail.

L’exemple parfait est la bordure par défault qui est présente autours du ContentDialog. C’est une bordure de 1px de la couleur de votre thème windows 10.

Voici la petite ligne de code qui permet de l’enlever (dans le code behind)

Application.Current.Resources["ContentDialogBorderWidth"] = new Thickness(0);


Text Binding RichEditBox in UWP

Quand on a besoins d’utiliser le control RichEditBox et que l’on veut binder du text à  celui ci celà devient un peu compliqué et je me suis souvent retrouvé à renoncer ou passer par des chemin détourné comme utiliser des control de librairies externes. Cependant je suis tombé sur un post de stackoverflow  qui donne une réponse parfaite : http://stackoverflow.com/questions/26549156/winrt-binding-a-rtf-string-to-a-richeditbox

public class RichEditBoxExtended : RichEditBox
{
    public static readonly DependencyProperty RtfTextProperty = 
        DependencyProperty.Register(
        "RtfText", typeof (string), typeof (RichEditBoxExtended),
        new PropertyMetadata(default(string), RtfTextPropertyChanged));

    private bool _lockChangeExecution;

    public RichEditBoxExtended()
    {
        TextChanged += RichEditBoxExtended_TextChanged;
    }

    public string RtfText
    {
        get { return (string) GetValue(RtfTextProperty); }
        set { SetValue(RtfTextProperty, value); }
    }

    private void RichEditBoxExtended_TextChanged(object sender, RoutedEventArgs e)
    {
        if (!_lockChangeExecution)
        {
            _lockChangeExecution = true;
            string text;
            Document.GetText(TextGetOptions.None, out text);
            if (string.IsNullOrWhiteSpace(text))
            {
                RtfText = "";
            }
            else
            {
                Document.GetText(TextGetOptions.FormatRtf, out text);
                RtfText = text;
            }
            _lockChangeExecution = false;
        }
    }

    private static void RtfTextPropertyChanged(DependencyObject dependencyObject,
        DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
    {
        var rtb = dependencyObject as RichEditBoxExtended;
        if (rtb == null) return;
        if (!rtb._lockChangeExecution)
        {
            rtb._lockChangeExecution = true;
            rtb.Document.SetText(TextSetOptions.FormatRtf, rtb.RtfText);
            rtb._lockChangeExecution = false;
        }
    }
}

Ceci permet de faire ce genre de chose :
<utils:RichEditBoxExtended TextWrapping="Wrap" RtfText="{Binding Text}"/>

avec Text une propriété de type string coté VM.

 



Nous travaillons tous pour Google et nous ne le savons pas.

Je m’explique : je viens de tomber sur un topic de Stack exchange parlant du fait que les Captcha, les petites fenètres où tu dis que tu n’es pas un robot quand tu arrives sur un site, ne servent pas qu’à vérifier cela. En effet elles servent depuis toujours à résoudre des micro problèmes insolvable par les machines comme la digitalisassion de livre (reconnaître un texte difforme) , l’amélioration de Google Streetview (reconnaissance des numéros de maison), et même maintenant amélioration des systèmes de Deep Learning (reconnaissance d’images). Je pensais que ce poste était fumeux jusqu’à ce que j’aille faire un tour sur le site officiel de ReCaptcha (service de Google) qui confirme tout ce que je viens de dire. Sachant que 150000 heures par mois dans le monde sont passées à remplir des Captchas et que Google a bien d’autres manières de se financer grâce à nous, comme le Google AdWord (régie publicitaire) il faut donc que l’on en soit tous conscient une bonne foi pour toute :  Google n’est pas philanthrope et sait se financer à nos dépend. Je ne porte pas de jugement, il faut qu’ils se financent certes et je ne paye rien pour utiliser leur service donc il ne faut pas cracher dessus mais j’aurais aimé être informé clairement et surtout plus tôt.

En résumé : Google a fait l’année dernière 14 milliards de bénéfice, ne paye quasiment pas d’impôt en France , est de multiple fois condamné par l’Europe et par la France pour sa politique de confidentialité, fait de l’optimisation fiscale grâce à des sociétés écran au Delaware utilise tous ses systèmes pour faire travailler à leur insu et gratuitement ses internautes. Ça commence à faire beaucoup.

Sachez pour finir qu’une action de classe aux états unis est en train de se monter contre ces pratiques. A suivre

Source : http://skeptics.stackexchange.com/questions/33117/is-google-using-recaptcha-as-a-free-source-of-human-intelligent-labour

https://www.google.com/recaptcha/intro/index.html#creation-of-value

 

 

 

 




top