Tinkerer's Auxiliary

Gehe zu Seite 1, 2  Weiter

Worklogs Tinkerer's Auxiliary Kommentare

Donnerstag, 31. März 2011 um 12:08 Uhr von Tritium

Um kurz den neuesten Stand zu verkünden: Ich bin in letzter Zeit wegen meines Studiums kaum zum Programmieren gekommen, außerdem bin ich in den Semesterferien auf BMax umgestiegen. Ich will dieses Projekt auf jeden Fall weiterführen, allerdings kann das noch ein bisschen dauern...

Mittwoch, 20. Oktober 2010 um 00:40 Uhr von Xeres

Du könntest auch ein Bild Laden (von wegen auswählbarer Oberfläche-Stile) und über das ganze Bild zeichnen; DrawBlock wäre ideal für das, was du machen willst:
Code: [AUSKLAPPEN]

Graphics 800,600,0,2

Local gfx_w=GraphicsWidth()
Local gfx_h=GraphicsHeight()
Local col=255 Shl 16+255 Shl 8+255, start

Local Gitterimg = CreateImage(16,16)

start=MilliSecs()
SetBuffer(ImageBuffer(Gitterimg))
ClsColor(0,128,128)
Cls
Color(0,0,255)
Line(15,0,15,15)
Line(0,15,15,15)
SetBuffer BackBuffer()
DebugLog MilliSecs()-start


Local image=CreateImage(gfx_w,gfx_h)
start=MilliSecs()
SetBuffer ImageBuffer(image)
TileBlock(Gitterimg,0,0)
SetBuffer BackBuffer()
DebugLog MilliSecs()-start

DrawImage image,0,0
Flip 0
WaitKey()
End

4-5 Millisekunden und damit noch schneller als Eingeproggts Variante.

Dienstag, 19. Oktober 2010 um 23:41 Uhr von Tritium

Genau die Variante hab ich als Verbesserung im Kopf gehabt Very Happy

Äh, hast Du die 1434ms bei meiner Ausgangsmethode gemessen? Oder bei meiner optimierten?

Dienstag, 19. Oktober 2010 um 23:36 Uhr von Eingeproggt

Ich hätte die Optimierung deiner Pixel-großen-Rects so gemacht:
Code: [AUSKLAPPEN]

Graphics 800,600,0,2

Local gfx_w=GraphicsWidth()
Local gfx_h=GraphicsHeight()
Local col=255 Shl 16+255 Shl 8+255

Local image=CreateImage(gfx_w,gfx_h)

Local start=MilliSecs()
SetBuffer ImageBuffer(image)
LockBuffer

For x=1 To gfx_w Step 2
   For y=1 To gfx_h Step 2
      WritePixelFast x,y,col
      ;Rect x,y,1,1
   Next
Next

UnlockBuffer
SetBuffer BackBuffer()

DebugLog MilliSecs()-start

DrawImage image,0,0
Flip 0
WaitKey()


Dein Code brauchte in diesem Test-Code (800x600 Graphics) auf meinem PC 1434ms, meine Variante schaffts in 10ms. Ist doch n brauchbarer Gewinn Wink

mfG, Christoph.

Dienstag, 19. Oktober 2010 um 23:25 Uhr von Tritium

@Jo0oker: Das stimmt, allerdings kann ich so zum Einen viel dazulernen, zum Andern hat meine GUI auch nur exakt das, was ich brauche. Außerdem kenne ich sie in- und auswendig und kann GUI-interne Veränderungen viel leichter vornehmen, als wenn ich mich erst in eine fremde einarbeiten müsste.

@Xeres: Ich verstehe ehrlich gesagt nicht so ganz, was Du mir sagen willst Confused

@ToeB: Ich speicher jedes Fenster in einem Type. U.a. gibt es dort ein Feld "image", dies enthält das Pixelgitter und den grundlegenden Aufbau des Fensters (Rahmen, Hintergrund, etc.). Wird ein Fenster gezeichnet, so wird erst dieses Bild fenster\image an die Position 0,0 gezeichnet, da es den ganzen Bildschirm ausfüllt. Darauf werden dann die einzelnen GUI-Elemente gezeichnet.
Allerdings hast Du Recht, noch einfacher wäre es, das Bild einmal zu erstellen, in einer globalen Variablen zu speichern und dann bei jeder Fenstererstellung nur noch die Variable zu kopieren Wink

Dienstag, 19. Oktober 2010 um 22:06 Uhr von ToeB

Auch noch ein Tipp von mir : Erstelle das "Punkt" bild am anfang ! Dann nur noch zeichnen wenn ein Neues fenster erstellt wird Wink

mfg ToeB

Dienstag, 19. Oktober 2010 um 21:38 Uhr von Xeres

Das mit der Grafik erstellen kannst du auch einfacher (vll auch. schneller) haben.
Wenn du den Imagebuffer auswählst, kannst du alle Zeichenbefehle auf ihn anwenden - so wie auf den Bildschirm.
Mit CLS die größte Fläche einfärben und Linien darauf zeichnen (Okay - Rect ist schneller als genau Vertikale/Horizontale Linien).

Mittwoch, 13. Oktober 2010 um 17:25 Uhr von Jo0oker

Wieso, es gibt genügend GUIs die über die WinAPI gehen...


lg Jo0oker

Mittwoch, 13. Oktober 2010 um 17:11 Uhr von Tritium

Wieso denkst Du das?

OK, hätte ich BlitzPlus, dann hätte ich es damit umgesetzt, aber so muss ich mir die GUI eben selber schreiben.

Mittwoch, 13. Oktober 2010 um 13:20 Uhr von Hummelpups

ich denke auf DX oder OGL ebene wirst du mit deinem Projekt
im elektrikerforum nicht viel erreichen.
solch ein projekt hat vermutlich mehr chancen, wenn du es
gleich mit der richtigen OS GUI umsetzt

Gehe zu Seite 1, 2  Weiter


Kommentar schreiben

Titel:
Text: