Bonjour à tous,
Sous Vista, directx10, plot me semble bugué:
OpenWindow(0,0,0,1000,200,"Un bug ?",#PB_Window_TitleBar)
StartDrawing(WindowOutput(0))
For i=0 To 999
Plot(i,100)
Next i
Delay(4000)
Le programme ci-dessus n'affiche que des morceaux de segment.
Si l'on remplace plot(i,100) par circle (i,100,2), par contre, ça fonctionne.
Vous allez peut-être me dire que c'est une histoire de type de variable, mais je doute que ce soit le cas...
...Ou que ça a déjà été rapporté ici:
http://www.purebasic.fr/french/viewtopi ... ht=directx.
...Ou que ça m'apprendra à bosser sous Vista. J'ai aussi Win2000 sur ma machine. Je vais aller voir si ça fait pareil sous 2000, tient, bonne idée. (En tout cas, avec l'ancienne version de PureBasic que j'avais, je crois qu'il n'y avait pas de souci. De même, sur l'écran graphique, no problemo.)
... Ou que des morceaux de segment, c'est encore des segments.
Bref, dites ce que vous voulez, mais dites-le.
Pourquoi vous le dites pas ?
Ah oui, faut envoyer.
Un bug avec plot et les fenêtres ?
Merci d'avoir vérifié.
Je viens de tester sous W2k, no problemo.
Je viens aussi de mettre à jour le pilote de ma 8600m (site de Dell) et ça n'arrange rien, sous Vista. (Au contraire, l'image sur l'écran graphique est à présent curieusement déformée. Les disques faits avec circle sont elliptiques.)
Je résume la situation: lorsque je dessine sur fenêtre directement, ça bugue avec plot et box et linexy , comme si y'avait un problème de type (au bout de 256 pixels, ça ne s'affiche plus, puis au bout de 256 autres ça s'affiche à nouveau etc).
Et en plus, c'est plutôt lent.
Pfff.
Je viens de tester sous W2k, no problemo.
Je viens aussi de mettre à jour le pilote de ma 8600m (site de Dell) et ça n'arrange rien, sous Vista. (Au contraire, l'image sur l'écran graphique est à présent curieusement déformée. Les disques faits avec circle sont elliptiques.)
Je résume la situation: lorsque je dessine sur fenêtre directement, ça bugue avec plot et box et linexy , comme si y'avait un problème de type (au bout de 256 pixels, ça ne s'affiche plus, puis au bout de 256 autres ça s'affiche à nouveau etc).
Et en plus, c'est plutôt lent.
Pfff.
bonjour 7Dav77
je suis un peu en retard.
et tu as peut être trouver la solution depuis,
en voila une!! mais je ne l'ai pas testée sous Vista,
elle fonctionne sous xp en attendant.
ah oui!! j'oubliais le truc de la box..
tu peux aussi utiliser box(i,100,1,1) c de la bidouille, mais ça dépanne
cordialement
mince! corrigé, merci Ollivier
je suis un peu en retard.
et tu as peut être trouver la solution depuis,
en voila une!! mais je ne l'ai pas testée sous Vista,
elle fonctionne sous xp en attendant.
ah oui!! j'oubliais le truc de la box..
tu peux aussi utiliser box(i,100,1,1) c de la bidouille, mais ça dépanne
cordialement
Code : Tout sélectionner
Procedure Plotdelaine(x,y)
hdc=GetDC_(WindowID(0)):pen=CreatePen_(0,0,RGB(0,0,0)):hPenOld=SelectObject_(hdc,pen)
SetPixel_(hdc,x,y,RGB(0,0,0))
DeleteObject_(pen): DeleteObject_(hPenOld):ReleaseDC_(WindowID(0),hdc):DeleteDC_(hdc)
EndProcedure
OpenWindow(0,0,0,1000,200,"Un bug ?",#PB_Window_TitleBar)
StartDrawing(WindowOutput(0))
For i=0 To 999
Plotdelaine(i,100)
;Plot(i,100)
; Box(i,100,i,1)
Next i
StopDrawing()
Delay(4000)
Dernière modification par kernadec le lun. 15/juin/2009 21:49, modifié 3 fois.
Une petite remarque aussi dans l'élaboration d'une routine : chaque chose commence et finit (excepté certaines fonctions comme, par exemple ImageGadget() qui se détruit, comme tout gadget lors de la fermeture de la fenêtre dans laquelle ils sont créés).
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 400, 300, "Test", $CF0001)
If CreateImage(0, 400, 300)
If StartDrawing(imageoutput(0) )
For X = 0 To 399
Plot(X, 150, #Red)
Next X
StopDrawing()
EndIf
If imagegadget(0, 0, 0, 400, 300, imageid(0) )
Repeat
Delay(1)
Until WindowEvent() = #PB_Event_CloseWindow
EndIf
FreeImage(0)
EndIf
CloseWindow(0)
EndIf
bonjour
je viens de visiter ce post :
http://www.purebasic.fr/french/viewtopi ... stretchblt
où il est question de réinventer la roue,
mais voila quelle tourne mieux avec un carré.
dans le post précèdent, je faisais remarquer à Mr 7dav77
qu'il pouvait utiliser la fonction box(x,y,1,1) à la place de plot.
avec le programme test de Mr Dobro, on peut s'apercevoir
que cette box est beaucoup plus rapide que le reste
ça va faire plaisir à beaucoup de monde.
cordialement
je viens de visiter ce post :
http://www.purebasic.fr/french/viewtopi ... stretchblt
où il est question de réinventer la roue,
mais voila quelle tourne mieux avec un carré.
dans le post précèdent, je faisais remarquer à Mr 7dav77
qu'il pouvait utiliser la fonction box(x,y,1,1) à la place de plot.
avec le programme test de Mr Dobro, on peut s'apercevoir
que cette box est beaucoup plus rapide que le reste
ça va faire plaisir à beaucoup de monde.
cordialement