03 mars 2008
Advanced Windows Forms pour les nuls (et les autres)
Dans le cadre de mon Projet Industriel ESIAL, j'ai été amené à utiliser Microsoft Visual Studio 2005 afin de bénéficier de Windows Forms .NET dans le langage C#. Ce post vise à vous exposer mes conclusions par rapport à la question fatidique : "Comment réaliser un contrôle réellement transparent qui respecte les règles ancestrales du Z-Order.
Le problème de base, c'est que si l'on utilise des PictureBox classiques, et que l'on met la propriété BackColor à Transparent, on s'attend à ce que les images soient affichées sur un fond transparent. Cependant, ce n'est pas le cas. Comme vous le voyez sur la première image, le font Transparent est en réalité u fond de la couleur du fond de son parent ... Cela n'est pas très convaincant ... Pour arranger cela il nous faut réaliser un peu de magie noire dans windows forms, et créer un composant utilisateur personnalisé qui contient le code suivant :
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
// Force la transparence du contrôle.
cp.ExStyle |= WS_EX_TRANSPARENT;
return cp;
}
}
protected override void OnPaintBackground(PaintEventArgs e) {}
protected override void OnMove(EventArgs e)
{
RecreateHandle();
}
On se retrouve donc avec un composant certes transparent, mais qui ne respecte plus le Z-Order (l'ordre dans lequel les contrôles doivent être dessinés, et qui détermine accessoirement lequel sera au dessus et lequel en dessous : la propriété autorise le contrôle à être effectivement transparent, la première méthode sert à ne pas dessiner de fond (et donc à être totalement transparent), et la seconde sert à redessiner le contrôle quand on le déplace.
Nous reste donc à corriger le fameux problème du Z-Order, sans quoi l'interception des événements de souris, de clavier, et autres se feront contre le bon sens par rapport à l'affichage (tout sera reçu par le contrôle dessiné le plus au fond). Pour ce faire il suffit de rajouter le code suivant à notre classe ...
protected override void OnPaint(PaintEventArgs e)
{
Application.DoEvents();
base.OnPaint(e);
}
Cette méthode a pour effet de forcer le contrôle à attendre que les autres événements aient été traités avant de se dessiner effectivement. Ceci inverse la pile de dessin et a pour effet de rétablir la cohérence du Z-Order tant chéri.
En revanche, cette méthode a ses limites : je ne l'ai pas testé (j'ai trop peur de constater les dégâts), mais je pense que cette méthode provoquera plus de problèmes qu'elle n'en résout si il y a un mélange de contrôles transparents et non transparents ... mais aussi longtemps que tous les contrôles descendent de celui que vous venez de définir, il n'y aura aucun souci.
08 septembre 2007
Je suis faible
Oui, je suis un faible. Une petite déprime passagère (ou pas) et je craque. Je voulais un nouvel iMac depuis le jour ou j'ai posé mes yeux dessus, c'est-à-dire le jour ou il a été annoncé par Dieu Steve Jobs.
Mais bon, il s'avère que l'Église Apple a prévu de bénir gratifier le Monde d'une nouvelle version de Jésus Mac OS X en Octobre. Du coup je me suis dit que j'allais attendre le Messie Léopard, fiévreux d'impatience jusqu'en Octobre. Mais Octobre quand ? Début ou fin ? Habituellement c'est plutôt fin.
Ca nous faisait donc deux mois... Plus que mon petit cerveau ne peut tenir. J'ai donc enfourché mon Store éducation et claqué €2.300 pour ceci:
iMac 24"
2Go DDR2 SDRAM
Disque dur de 750Go
iLife 2008 préinstallé
Apple MightyMouse sans fil
Clavier qui déchire sa race avec fil
Oui, on peut se demander judicieusement pourquoi le clavier a un fil. Parce que je trouve ça trop cool d'avoir un hub USB 2.0 sur mon bureau, et que je peux dire tout ce que je veux (genre le pavé numérique ça sert à rien, tout ça), en me surveillant un peu je me suis rendu compte que le pavé numérique est un luxe dont j'ai du mal à me défaire, même si j'ai pris l'habitude de m'en passer sur mon PC Portable (relique, le pauvre, des temps anciens).
21 juillet 2007
Première et dernière fois
Hier, 20 Juillet 2007, après une longue et harassante journée de travail (j'ai quand même quitté à 14H!), durant laquelle j'ai bien réfléchi à ma stratégie, j'ai exécuté mon plan diabolique :
Ici, à Dublin, les gens faisaient la queue devant les librairies du centre depuis le matin pour obtenir leur copie du tant attendu Harry Potter and the Deathly Hallows, manifestement, à 23H, c'était de la folie douce. Donc moi intelligent, moi être supérieur, je me suis dit : "Si tout le monde poireaute comme un con en plein centre ville, qu'en plus ces idiots ils vont devoir se payer un NiteLink pour rentrer chez eux, j'ai qu'à attendre chez Tesco, en banlieue tranquille, où y aura personne !"
Et bon force est de constater que je m'étais trompé. Y avait 3 grand-mères qui attendaient quand j'y suis arrivé vers minuit moins vingt. Du coup je suis allé me prendre une bouteille de coca pour patienter plus efficacement, du gel à raser parce que j'avais oublié ça en achetant mon rasoir ... Et hop, en file. Bientôt une quantité plus importante de gens arrivèrent, se mirent en ligne jusqu'à minuit passé de quelques minutes, où la pile de saints Grâals Harry Potters est arrivée.
A ce moment précis, et pour la première fois (et aussi la dernière, de facto), j'ai obtenu mon exemplaire de Harry Potter le jour de sa sortie, dans les premiers instants de sa disponibilité. C'est jouissif !!!
14 juin 2007
J2ME
Il fallait que je partage ça avec vous, amis qui essayez de programmer en J2ME pour votre téléphone portable ou votre PDA : Si votre appareil mobile vous propose une erreur du genre "Application Invalide", commencez par vérifier le format de votre attribut MIDlet-Version dans vos manifestes, il DOIT respecter le format : X.XX[.XX], où X représente la place d'un chiffre, XX celle d'un ou deux chiffres, et les éléments entre [] sont facultatifs...
Ca vous fera gagner des heures ! Je vous jure !!!!
21 novembre 2006
FUBAR ???
Suite à une question pertinente de mon ami KunKun au sujet des méta-variables usuelles "foo" et "bar" que l'on croise bien souvent dans les documentations informatiques, j'ai été amené à mener une petite recherche sur Wikipédia, guidée par l'ami Adrien ...
Et il s'avère donc que foo-bar vient de FUBAR, un acronyme utilisé dans l'armée américaine, parmi tant d'autres, dont la signification est proprement hilarante ... Je vous en donne donc un folrilège (les traductions en français sont données à titre indicatif et ne sont pas toujours aussi près de la sémantique initiale que je le voudrai) :
FUBAR - Fucked Up Beyond All Recognition
Dans la merde au delà de l'entendement
BOHICA - Bend Over, Here It Comes Again
Prosternez-vous, voilà que ça revient !
TARFU - Things Are Really Fucked Up
C'est vraiment la merde ...
SAPFU - Surpasses All Previous Fuck Ups
Dépasse toutes les emmerdes précédentes ...
FUBB - Fucked Up Beyond Belief
Incroyablement dans la merde.
TOFU - Things Ordinary: Fucked Up
Comme d'habtiude : C'est la merde.
TUIFU - The Ultimate In Fuck Ups
Les emmerdes ultimes.
MOAFU - Mother Of All Fuck Ups
Mère de toutes les emmerdes !
BEIFT - Behold, Every Indicator Forebodes Trouble
Attention, tous les indicateurs prévoient des emmerdes !
24 août 2006
XGL/Compiz, ou le Sabayon au manchot ...
Je vous avais déjà parlé de E17, définissant à l'époque l'Ultime Stade de Geekoolol. Les choses ont changé depuis cette belle époque. Certes, E17 a énormément évolué (en bien) et reste très prometteur, mais il ne dispose pas encore à ma connaissance de certaines fonctionnalités dont l'inutilité est poussée à l'extrême, mais qui font qu'on a l'impression que notre PC est une absolue bête de course ... Alors que pas du tout !
Cette perle rare s'appelle Compiz (pour les feignasses, Mac OS X fait quasiment tout ce que Compiz fait) et tourne sous tous les systèmes qui sont compatibles avec XGL (un dérivatif de X par OpenGL). Compiz en soi n'est rien, c'est un gestionnaire de composition (en gros il prend les éléments graphiques, les agence sous forme de couches, et les rend proprement ...) qui gère l'accélération matérielle (via XGL donc) et permet de faire des choses assez hallucinantes.
Comme vous pouvez le voir sur l'image qui illustre ce post, Compiz vous permet d'utiliser un cube façon Mac OS X pour changer de VP (Bureau Virtuel), ce qui a trop la classe. Mais ce que vous ne voyez pas (enfin, peu), c'est qu'il gère la transparence réelle (en gros, plutôt que de copier le fond d'écran, ça copie ce qui se trouve réellement en dessous). Mais en plus de ça ... ils transforme vos éléments de bureau en caoutchouc ... Les fenêtres se déforment de façon élastique quand on les déplace, quand on les redimensionne (agrandissement, minimisation inclus), ainsi d'ailleurs que les menus et tout ça. Il va de soi que l'on peut régler l'opacité d'une fenêtre en un clic. Et on peut aussi faire un effet "surface d'eau plane sur laquelle il pleut" qui est rendu par des shaders et qui est du plus bel effet.
Pour plus d'informations, je vous invite (enjoins, même) à vous renseigner sur XGL, Compiz, et Sabayon Linux (anciennement connu sous le nom de RR4/RR64) !
26 mai 2006
Certaines choses changent...
Grâce à Pida, j'ai pu faire un voyage dans le temps ! Et du coup, en gros geek que je suis, je suis allé regarder comment le site de Apple avait évolué. Et que de progrès d'effectué !!!
En 1996, leur site était ... Très laid. Mais dès 1998, où d'ailleurs on pouvait voir l'image associée à ce post le mois d'avril, on commence à voir apparaître les prémices de ce qu'il est actuellement. 2000 Voit naître le site de Apple tel qu'on le connaît actuellement, en même temps que le PowerMac G4.
Le plus amusant là-dedans est de voir qu'en 1996 on s'extasiait d'offrir des processeurs à 150MHz, en 2000 on vante les mérites du 500MHz, et on découvre le multiprocesseur "grand public". Maintenant, on cherche à nous faire acheter du 3GHz. Ça va vite, la loi de Moore.
Enfin, vous noterez, ironie du sort, qu'en moins de 10 ans, l'attitude de Apple envers Intel a ... changé. Pour la machine à remonter le temps, c'est par là.
11 mai 2006
Mots clés 2, le retour
Le retour des fameux mots clés, et divers outils statistiques offerts par le Saint Grâal du blog (ou presque) : Canalblog.
Avant toute autre chose, je tiens à vous enguirlander personnellement à cause de la tronche du diagramme qui illustre cet article. En effet, il montre que 76% d'entre vous utilisent (encore) M$ Internet Explorer 6.0. Bon, ça aurait été pire si quelqu'un avait utilisé IE 5, alors je vais fermer les yeux pour cette fois. Mais vous feriez vraiment bien d'essayer firefox. En dehors de ces quelques (herm) non-avertis, 4% d'entre vous sont en retard sur le progès technologique. Oui, FireFox 1.0.7 est dépassé mes amis, passez à la 1.5.0.3 ou ultérieure, ça, c'est l'avenir ! Enfin, félicitations chaleureuses aux divers utilisateurs de Safari, et féroces réprimandes aux utilisateurs des versions pré-Mathusalem de Internet Explorer, et Konqueror (herm herm).
Niveau mots-clés, vous m'enchantez les enfants. Bon, bien trop de monde encore utilise des requêtes contenant les infâmes mots "James" et "Blunt", décidément, c'est le tub planétaire de l'année ou bien ? Mais, du monde arrive encore fréquemment sur mon blog en tapant "embrassade" sur google. D'aucuns sont arrivés ici en cherchant une "bonasse", ils ont dû être déçus. Les frères Scott remportent un franc succès, notamment par le biais du générique proposé par Gavin DeGraw, mais aussi grâce aux brillantes citations hautement philosophiques de Lucas Scott.
D'aucuns enfin m'ont cherché, moi, oui, rien que moi "tidus3012", ils ont donc trouvé mon humble demeure, où des gens arrivent aussi en cherchant "par derrière". Oui, vous arrivez parfois ici avec des requêtes troublantes. On se demande si vous cherchez du cul ou des choses plus platoniques. Ça m'amuse moi. Oui, il m'en faut peu.
08 mai 2006
Idée à la con ?
Les enfants, vous allez pas me croire (peut-être que si en fait) : je viens d'avoir une idée de Génie (je dirai peut-être plus ça dans deux jours, alors profitez en). C'est, et là, je suppose que vous vous en doutez, une idée à la con.
En fait, vous savez tous autant que vous êtes que je suis un mec du genre passionné. Oui, peut-être pas, certes. Maintenant oui. Ce que vous savez peut-être pas c'est que je suis un passionné de geekerie (moui, vous savez ça), mais aussi de Science-fiction (c'est un peu lié, mais pas indissociable), et aussi de Stargate. Déjà emballé par le film, je suis un des fans de la première heure de la série (bien qu'elle ait tendance à s'essouffler, et que Atlantis ait encore du boulot (et du budget) avant d'être à la hauteur de ses prétentions.
Or donc, riche de toutes ces passions, et passant ces temps cis pas mal de temps à jouer sur OGame, j'ai pensé à un truc. Bon, je suis d'accord que sur le principe j'invente pas grand chose, et que d'une manière générale, je ne ferai que détourner des concepts déjà existants. N'empêche que ça me botte bien.
Je me suis dit qu'il y avait pourquoi pas moyen de faire un truc un peu dans le même style que OGame, mais en reprenant le concept Stargate, et en adaptant le style de jeu. C'est une idée brute que j'ai eu à l'instant, je sais pas ce que ça vaut, et je sais pas encore exactement comment je pourrai mener le projet à bien (déjà, c'est pas mes talents de graphiste qui vont m'aider ^_^).
Mais, si je trouvais par exemple quelques collaborateurs intéressés, ou que je voyais que le concept intéresse un minimum de gens (je demande pas grand chose), peut-être que j'inclurai dans mes temps de loisirs des séances de codage intense de My Stargate Project. Faut voir.
Vous en pensez quoi ? C'est nul hein ? Ou pas ?
13 avril 2006
Le Kikoolol du Geek, ou Geekoolol
J'avais dit que je parlerais Geek, je parle donc Nerd. Avant toute chose, je vais vous introduire à deux termes génériques assez courants, mais que les moins avertis d'entre nous ne connaîssent peut-être pas (grand bien leur fasse par ailleurs, je m'en veux presque de déflorer cette douce innocence).
Kikoolol : Ce terme de post-djeuns est utilisé par les gens ayant un niveau décent de civilisation pour décrire des gens qui usent (abusent) de SMS et d'argot internet (je ne parle même pas de 1337). Par extension, on attribuera ce qualificatif à toute chose ou personne manifestement puérile (au sens vastement péjoratif du terme), ou futile, voire même inutile. (En outre, je vous invite à voir la définition, certes limitative, de Wikipedia)
Geekoolol : Ce terme est quand à lui un simple sur-barbarisme en forme de mot-valise de mon cru, qui a à peine 5 minutes d'ancienneté, et qui je l'espère se démocratisera très vite. Son objectif ultime étant de décrire les éléments kikoolol de l'attirail du geek.
Donc je vais maintenant passer aux choses sérieuses : Je vais vous montrer le paroxysme du Geekolol moderne : Enlightenment, prononcer [N-light-'ment] (N : pour le son èn, light comme vos yaourts, et 'ment à l'anglaise façon patate chaude in da mouth). Mais ne soyons pas si ouvert d'esprit, nous parlons geek, nous éviterons cependant de trop nourrir le Troll : on va limiter l'étude au fameux E17 (pour Enlightenment 17), qui est actuellement en stade pre-alpha (aussi appelé, pour les non initiés "développement lourd") ... Alpha, ça veut dire qu'on parle de logiciel fortement expérimental, totalement instable et nécessitant fondamentalement d'incessantes mises à jour : je ne vois pas ce qu'un geek à tendance nerd pourrait rêver de mieux.
E17, c'est un environnement tout beau tout neuf, qui utilise à fond les capacités de votre matériel graphique pour exploser les autres Window Managers de Linux (et compatibles) en vitesse de composition, tout en vous fournissant une kyrielle d'effets visuels tous plus inutiles les uns que les autres : un système de plug-ins totalement jouissif qui vous permettra de faire faire n'importe quoi à votre bureau (surtout si c'est inutile), comme par exemple faire brûler le bas de l'écran pendant que vous faites tomber de la neige sur votre fond d'écran animé sur lequel vous avez fait pousser des sapins. Oui, pour le moment le feu ne fait pas fondre la neige ni brûler les sapins, mais je reste convaincu que ça finira par être le cas un jour ou l'autre.
En plus de ça, E17, c'est des effets graphiques de folie en mouse-over : quand votre souris passe sur un élément de menu, quand vous changez de fenêtres, vos yeux s'en prennent plein la figure. Et oui, être geek, c'est aussi avoir un sens artistique. L'idée étant que certes, ces fonctionnalités sont toutes plus inutiles les unes que les autres, mais on peut se le permettre, puisqu'enlightenment ne représente quasiment rien en charge système : on pourrait se permettre d'en mettre encore plus que plus. Et même moi avec ma vilaine carte graphique S3 qui date d'avant la guerre, je fais tourner E17 sans le moindre lag ... Un rêve j'vous dit !
Allez, geekez sur Enlightenment : il vous faudra au plus faire un drop CVS et le compiler à la mùain et dans l'ordre, et au mieux éditer quelques fichiers de configuration et taper deux commandes ... Comme quoi le geekoolol n'est pas réservé qu'à une élite ! Vous aussi, devenez dès aujourd'hui un geekoololeur : installez E17.


