Pomme d'API , memory DC et ses joyeux amis.... [Win32 et bidouille] - Programmation
Marsh Posté le 10-05-2001 à 16:17:51
La meilleur solution mais pas la plus simple, c'est de redessinner que la partie que tu fais apparaitre lors du scroling et de deplacer la partie deja affichée mais encore valable.
Le problème c'est que tu dois vachement optimiser la procédure d'afffichage pour cela.
Marsh Posté le 11-05-2001 à 00:29:44
Pas glop
D'autres idées ?
Comment y font a votre avis dans photoshop quand on zoom a mort ?
et internet explorer pour afficher des pages de 2km de haut ?
Marsh Posté le 11-05-2001 à 00:37:22
t'as essayé de crée des image DIB ?? (CreateDIBitmap(...)) j'ai jamais essayé mais j'ai déjà vu des applics qui s'en servaient et ça avait l'air pas mal...
sinon à la limite tu utilises le directdraw... une géante surface Back que tu blit en partie dans ta surface primary... mais sur des tailles si grandes je sais pas ce que ça donne (il faudra de toute manière la crée en mémoire système la surface back)
Marsh Posté le 11-05-2001 à 09:18:30
Fait un DC de la taille de la fenetre, tu le scroll et tu rajoutes la partie qui apparait...
Marsh Posté le 11-05-2001 à 10:40:04
spark a écrit a écrit : Pas glop D'autres idées ? Comment y font a votre avis dans photoshop quand on zoom a mort ? et internet explorer pour afficher des pages de 2km de haut ? |
Pour IE c'est comme j'ai indiqué.
Pour photoshop, il mettent le bitmap en mémoire puis affichent une partie le bitmap dans le DC pendant le scroling.
Marsh Posté le 11-05-2001 à 12:54:45
Pomme d'API, mdr
sinon : "La meilleur solution mais pas la plus simple, c'est de redessinner que la partie que tu fais apparaitre lors du scroling et de deplacer la partie deja affichée mais encore valable."
tu peux detailler un peu + : ca m'interresse bcp moi aussi, comment IE il se demerde pour afficher 10 km de txt + images en restant (assez) fluide.
et si te le fait, je serais happy !! (API, bon d'accord c nul)
Marsh Posté le 11-05-2001 à 13:04:21
et tant qu'on y est, comment il gere IE les liens hyper text ?
il cree un label expres en plein milieu du text et gere le mouseclick ?
Marsh Posté le 11-05-2001 à 13:20:27
Merci pour vos réponses, meme si je ne trouve pas ces solutions assez convainquantes...
La je me suis lancé dans une matrice de DC, on va voir si ca le fait...
Mais il est pas exclus que j'utilise la technique qui redessine seulement la partie nouvellement exposée.
Sinon, je sais toujours pas comment IE fait pour gérer des pages de 10km de long........ y a pas des browser open source pour voir comment y s'y prennent ?
Marsh Posté le 11-05-2001 à 13:44:45
HelloWorld a écrit a écrit : et tant qu'on y est, comment il gere IE les liens hyper text ? il cree un label expres en plein milieu du text et gere le mouseclick ? |
Pour les liens hypertexts, IE à un tableau où sont regroupé tous les elements qui composent la pages et fais une recherche pour savoir lequel se trouve sous la souris à chaque fois que tu bouge la souris.
Cette fonction est même "publique", si tu utilise l'activeX IWebBrowser tu peux t'en servir.
Bien tout cela est très optimisé pour que la recherche ne prenne qu'un temp infime
Pour ce qui est l'affichage du texte un example
IE affiche sur un écran de 3 lignes la page html suivante
AAAAA
BBBBB
CCCCC
DDDDD
EEEEE
il affiche dans un 1er temp
AAAAA
BBBBB
CCCCC
puis quand on scrole
il deplace le bloc
BBBBB
CCCCC
vers le haut avec une fonction Bitblt
puis affiche la ligne
DDDDD
Donc en fait il ne raffiche qu'une toute petite partie de la page ce qui est très rapide.
Bien sur il faut toujours optimiser pour savoir quelle ligne il faut afficher, et puis gérer le fait qu'on ne se déplace pas d'une ligne à la fois mais de x pixels.
Marsh Posté le 11-05-2001 à 13:52:48
merci merci
si j'ai bien compris, il affiche ce qu'il a calculé precedement et calcule ce qu'on va surement lui demander un peu + tard ? c pas con ... comment connais tu le fonctionnement de IE ? (c'est open source ? )
mais ... qui est dédé ?
Marsh Posté le 11-05-2001 à 14:01:51
Non c'est pas open source, et je peux pas te garantir à 100% qu'il fait comme cela mais c'est la méthode usuelle pour ce genre de problèmes ( traitement de texte...).
Sinon IE est très ouvert pour un programmeur qui sait utiliser les activeX, tous les tags HTML sont convertis en objets et on peut facilement modifier la page affiché en temps réel, recevoir de evenements,... dans un programme externe à ie. On peut même mettre ie dans son propre programme.
Marsh Posté le 10-05-2001 à 15:27:45
Bon, on est en train de faire un ocx pour representer en gros des grands diagrammes. Pour l'instant, c'est fait à la porcos, quand le mec scrolle, on s'amuse a tout redessiner à la main. Ca rame a mort, surtout quand il y a plein d'éléments à l'ecran.
Alors on s'est dit, on va scroller une image au lieu de tout redessiner comme des cons.
Donc, on s'est dit, on va utiliser un DC en mémoire!
Yeah !
Seulement, on s'est vite rendu compte que c'était un peu de la merde pour ce qu'on veut faire... Car c'est limité en taille.... et nous on a besoin de beaucoup beaucoup de place...
C'est un peu un genre de calendrier et si le mec veut visualiser une année avec un précision de 10-20 pixels par heure, ca fait un peu plus de 175000 pixels de large...... et encore, c'est juste pour une année....
Donc, on s'est dit, pas de problemes, on va ruser comme des porcos
Et là, nouvelle idée, on va creer un super tableau de DC pour faire un genre de mosaique comme canalsatellite mais avec du scrolling.
Yeah !
Mais là, on se rend compte que c un peu chiant pour dessiner un trait qui passe entre plusieurs DC, mais ca pas impossible.
DONC, si t'es pas encore mort de rire en voyant comment on veut faire et que tu as une idée, fait moi signe.
Et si tu es blonde a forte poitrine aussi.... on sais jamais....
Bref, vu qu'un DC est limité un peu a 8.000.000 pixels² (4.000*2.000 pixels par exemple) et qu'on veut faire le pire scrolling FLUIDE sur une zone immense, comment qu'on doit faire ?
Merci de votre attention, et @ bientot pour de nouvelles aventures porcosiennes.
Spark & Smocky