[Win32 et bidouille] Pomme d'API , memory DC et ses joyeux amis....

Pomme d'API , memory DC et ses joyeux amis.... [Win32 et bidouille] - Programmation

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

Reply

Marsh Posté le 10-05-2001 à 15:27:45   

Reply

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.


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
Reply

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 ?

Reply

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)

Reply

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...

Reply

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.


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
Reply

Marsh Posté le 11-05-2001 à 12:54:45    

Pomme d'API, mdr :lol: :lol: :lol:
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)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

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 ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

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 ?

Reply

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.


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
Reply

Marsh Posté le 11-05-2001 à 13:44:45   

Reply

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é ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

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.


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed