Bonjour,
Pourquoi utiliser un buffer si vous ne le conservez pas ?
Avez-vous essayé en dessinant directement dans le graphics du canvas ?
S'agissant de dessin d'images, je ne sais pas si useoldrenderer = true
améliorerait le temps d'exécution ?
De même pour les pragma.
Désolé pas d'autre idée.
Eric POUSSE
RealCADD, 2D CAD software : <http://www.realcadd.com/>
iPocket BA : <http://www.adx-online.com/prog/ipocketba/ipocketba.html>
Le 31 mars 09 à 21:41, Jérémie Leroy a écrit :
Alors voici le code en simplifié.
Sub Redraw(g As graphics)
//g est le graphics du canvas
Dim buffer as Picture = NewPicture(g.Width, g.Height, 32)
Dim gg As Graphics = buffer.Graphics
DrawBackground(gg)
gg.DrawPicture DispPicture, 0, 0, cWidth, cHeight, scrollDeltaX/
po, scrollDeltaY/po, DispPicture.Width, DispPicture.Height
If DrawLayer then
buffer.Graphics.DrawPicture Layers, LayerPos.X1*po-
scrollDeltaX, LayerPos.Y1*po-scrollDeltaY, LayerPos.Width*po,
LayerPos.Height*po, _
0, 0, LayerPos.Width, LayerPos.Height
End If
//Draw Selection
DrawSelection(gg)
//Draw to canvas
g.DrawPicture buffer, 0, 0
End Sub
Sub DrawBackground(g As Graphics)
//Cette fonction redessine BackGroundBuffer (propriété privée du
Canvas) si la taille du canvas a été modifié.
//Ensuite, BackGroundBuffer est dessiné sur la variable "g"
passée en paramètre de fonction
g.DrawPicture(BackgroundBuffer, 0, 0)
End Sub
Sub DrawSelection(g As Graphics)
//Idem que DrawBackGroudn, SelectionPic est recréé uniquement si
la sélection change de taille
//Ensuite la sélection est dessinée sur la variable g
g.DrawPicture SelectionPic, me.Selection.RealX-scrollDeltaX,
me.Selection.RealY-scrollDeltaY
End Sub
Je vois mal comment je pourrais optimiser ça en utilisant uniquement
des fonctions internes de RB.
--
ESILV Engineering Student
REALBasic Developer
http://pagesperso-orange.fr/JeremK/
From: Eric Pousse
Sent: Tuesday, March 31, 2009 8:41 PM
To: REALbasic NUG French
Subject: Re: Alternative à Graphics.DrawPicture
Bonsoir,
Il est peut-être possible d'accélérer le code, montrez-le.
Ou bien autre solution, avoir une image d'arrière plan en ressource
d'une taille suffisante et l'afficher avant l'image zoomée.
Eric POUSSE
RealCADD, 2D CAD software : <http://www.realcadd.com/>
iPocket BA : <http://www.adx-online.com/prog/ipocketba/ipocketba.html>
Le 31 mars 09 à 20:22, Jérémie Leroy a écrit :
Bonjour,
Je travail sur une application graphique, ou plutôt un IDE qui a une
partie graphique comme REALbasic.
Sur l'affichage graphique, il y a une image qui peut être zoomée.
Lorsque le zoom est < 100 (l'image ne prend plus tout l'espace
graphique disponible), je dessine un arrière plan composé de carrés
gris et blanc (comme l'arrière plan de transparence dans Photoshop).
Le rafraichissement prend environ 50ms.
J'aimerai améliorer ceci et donc je cherche une alternative à
DrawPicture, en utilisant directement les appels disponibles dans
Windows pour dessiner une image sur un objet graphique.
Je connais BitBlt mais ceci ne fonctionne que sur Canvas.graphics
alors que j'ai besoin de dessiner sur une image qui sert de Buffer
d'abord.
Aussi si il y a une alternative plus rapide à Graphics.FillRect je
suis preneur.
Cordialement,
Jérémie Leroy
--
ESILV Engineering Student
REALBasic Developer
http://pagesperso-orange.fr/JeremK/
|