Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bitmap zu klein (https://www.delphipraxis.net/128489-bitmap-zu-klein.html)

ErazerZ 30. Jan 2009 17:19


Bitmap zu klein
 
Hey,
ich habe ein kleines Problem und zwar ich programmiere gerade einen MIDI sequenzer. Das Problem besteht darin das wenn ich alle Noten einlese, diese dann auf einem Bitmap zeiche (zuerst Hintergrund(Kästchen überall) und dann Noten drauf) dann kommt es bei langen Tracks zu fehlern weil die Breite des Images ist genauso groß wie ein Track lang ist (und das kann sehr lang sein) und wenn ich zum Beispiel ein Track lade der 3 Minuten lang ist dann erstelle ich ein ziemlich großes Bitmap was zu einem Fehler führt (nicht genügend Speicher). Ich habs schon versucht zum Beispiel zu divieren (zB TrackLength div 100 aber das ist auch nicht die Lösung weil die Noten dann zu klein sind).
Ja und ich wollte euch mal fragen ob ihr irgendwelche Vorschläge habts wie ich das am besten realisieren kann.
Direkt aufs Canvas zu Zeichnen ist doch ein bisschen anstrengend weil es ziemlich viele berechnungen sind und die performence dann nicht all zu optimal wäre.
Mein Idee wäre Shapes für die Noten und für den Hintergrund selber zeichnen aber ob das so gut ist. Wenn ich z.B. 300 Noten habe dann wären das 300 Objekte was mir auch viel erscheint.
Mein Noten Editor soll so ungefähr aussehen: http://willydavidk.kittsplace.com/gr...FL/boobass.JPG
Ich hoffe jemand kann mir weiter helfen :)

worker 30. Jan 2009 17:24

Re: Bitmap zu klein
 
Ich gehe nicht davon aus, dass der ganze Track komplett im Blickfeld des Users sein muss.

Warum also nicht partiell einlesen und zeichnen?

ErazerZ 30. Jan 2009 17:36

Re: Bitmap zu klein
 
Nein aber ich hab mir gedacht das es möglich sein sollte das man gleich scrollt und somit die Noten angezeigt werden. Funktioniert aber eh wunderbar bis auf das eine das ich ein TImage/Bitmap benutze und dass ich da nicht eine unbegrenze größe habe (was ja klar ist). Und ausserdem bekomme ich die Noten alle aufeinmal in einer funktion und die zeichne alle aufeinmal auf. Es wäre schon anstrengender das zu teilen und dann zu zeichnen aber naja, falls es keine anderen Lösungsvorschläge gibt dann müsst ich das doch so machen.

worker 30. Jan 2009 18:38

Re: Bitmap zu klein
 
[OT]
Und beschäftige Dich mal mit Absätzen; Deine Texte sind schwer zu lesen. :wink:
[/OT]

ErazerZ 30. Jan 2009 19:09

Re: Bitmap zu klein
 
[OT]

Werde ich machen.


Danke,


worker.

[/OT]

himitsu 30. Jan 2009 19:33

Re: Bitmap zu klein
 
du könntest auch nur den aktuell sichtbaren Teil auf eine PaintBox zeichnen zusammen mit 'ner ScrollBar könntest du dir die Anfangsposition berechnen und dann ab da nur diesen Teil ausgeben.

Rudirabbit 30. Jan 2009 19:34

Re: Bitmap zu klein
 
@ErazerZ: Ich hätte das Problem auch so versucht zu lösen.
Teste mal tbitmap32 von der Graphics32 Kompo

Gruß Rudi

himitsu 30. Jan 2009 19:43

Re: Bitmap zu klein
 
Ach ja, notfalls könnts du auch mehrere BitMaps erstellen und dieser hintereinander anzeigen.

ErazerZ 30. Jan 2009 20:46

Re: Bitmap zu klein
 
Danke, Graphics32 werd ich wahrscheinlich eh benützen aber das mit Bitmaps hab ich auch versucht nur dacht ich mir vielleicht wenn ich 300 kb datei lade und das 11 oktave mal sagen wir 40 wäre auch viel.

xZise 31. Jan 2009 23:31

Re: Bitmap zu klein
 
Naja so schwer ist das an sich doch nicht? Statt einfach alles zu zeichnen implementierst du eine Funktion die von Zeitpunkt A bis zum Zeitpunkt B die Noten auf ein TBitmap zeichnet. Nun ruft die "alte" Funktion diese mit den Parametern 0 bis Länge des Tracks.

Und ansonsten baust du dir eine Scrollbar hin welche sich beim bewegen meldet und die Bitmap neu zeichnen lässt.

MfG
xZise


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz