taouale2
Messages postés24Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention 4 février 2010
-
16 juin 2008 à 23:53
taouale2
Messages postés24Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention 4 février 2010
-
18 juin 2008 à 10:46
Bonjour, je suis en train de réaliser une application graphique en VB.NET sur PDA (WM5) qui doit tourner rapidement (25hz pour le rafraichissement). Je dois afficher quelques cercles et quelques traits, ainsi que du texte dans une police spécifique.
Mon problème est que lorsque je me contente d'afficher des traits et des cercles, je respecte largement la fréquence de rafraichissement à 25hz, mais dès que je fait du drawstring, je tombe à 15hz ...
Ma question est la suivante : si je crée une image pour chaque caractère de la police (principalement des chiffres), serait il plus rapide d'afficher ces images via drawimage plutot que d'utiliser drawstring ? Ou existe t'il une autre solution plus rapide ?
D'avance merci de votre aide
taouale2
Messages postés24Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention 4 février 2010 17 juin 2008 à 23:34
Aïe ... "DirectX Mobile 5.0 ne contient pas DirectDraw, donc pour faire de la 2D, vous n'avez pas le choix il faut passer par Direct3D." (source). Et là ça se corse ...
Mais peut etre y-a t'il ne possibilité d'optimiser mon code (je ne suis qu'amateur).Voici un bout de mon code, ce sera plus clair :
PublicClass Form1
Dim objBitMap
PrivateSub Form1_Load(ByVal sender AsObject, ByVal e As System.EventArgs)HandlesMyBase.Load
objBitMap = New Bitmap(Pic_Temp.Image)'je crée un bitmap une seule fois au démarrage à partir d'une image contenue dans un picturebox
EndSub
PrivateSub Tmr_General_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Tmr_General.Tick
Dim objGraphics As Graphics
Dim MaFont As Font
Dim MaBrush As Brush
objGraphics = Graphics.FromImage(objBitMap)
objGraphics.Clear(Color.Black)
objGraphics.DrawImage(Pic_Temp.Image, 0, 0)'pic_temp est une picturebox contenant une image utilisée pour le fond
MaFont = New Font("DS-Digital", 75, FontStyle.Italic)
MaBrush = New SolidBrush(Color.LimeGreen)
objGraphics.DrawString("toto", MaFont, MaBrush, 0, 0)
Me.Pic_Tdb.Image = objBitMap 'je met objbitmap comme image dans ma picturebox de destination
objGraphics.Dispose()
MaFont .Dispose()
MaBrush .Dispose()
objGraphics = Nothing
EndSub
EndClass
C'est très schématisé, j'affiche un tas de données en réalité.
Qu'en pensez vous ?
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 18 juin 2008 à 10:13
Bonjour
Scuse, j'avais pas vu que tu était sur embarqué....
Bin fatalement, ce ne sont pas non plus des équipements pour faire du graphisme haute définition rapide ....
Ma proposition tenait pour du fixe ou PC portable, mais pas embarqué.
N'ayant pas assez d'expérience dans ce domaine, je ne saurais te conseiller au mieux. Dsl.
Si tu peux, essaye plutot de dessiner directement sur le conteneur au lieu d'un bitmap, tu gagneras un peu peut être (avec un clignotement éventuellement).
Dsl.
Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Vous n’avez pas trouvé la réponse que vous recherchez ?
taouale2
Messages postés24Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention 4 février 2010 18 juin 2008 à 10:46
Bonjour, ne t'excuse pas ! c'est déjà sympa de m'avoir répondu . Et en plus ça m'a donné une piste : direct3d ... en fait, ça revient à traiter le problème comme un jeu. Mais effectivement, ça se corse parce que l'approche change pas mal. Je cherchais une solution simple, mais s'il n'y a pas le choix je vais m'y mettre ...
Mais avant, je vais tester la solution de dessiner dans un conteneur, c'est une bonne idée.
Je posterai mes résultats de toute façon.
S'il y a d'autres idées, je reste preneur !