![]() |
AW: pf8Bit seltsames aussehen der Palette
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Die Tatsache DASS du vertikal zeichnest bzw. zeichnen musst macht es ja so langsam weil du mit Scanline ja nur zeilenweise Zeichnen kannst. Wenn du jetzt aber dein Bitmap um 90° drehst kannst du horizontal malen und Scanline effektiv benutzen. (siehe Anhang) Damit es dann auf dem Bildschirm wieder richtig rum ist musst du das Bitmap da dann (z.B.) per PlgBlt zurückdrehen. |
AW: pf8Bit seltsames aussehen der Palette
Zitat:
In dem vorherigen Beispiel mache ich es auch nicht anders (falsch oder richtig das wäre dann die frage) bin mir jetzt nicht so sicher weil hier mit Scanline die RGB Farben übergeben werden. Also eine ganz andere Sache. Hier ist nochmal mein Code.. Variablen anders vergeben zum besseren Verständnis. Ok zeichne Horizontal..
Delphi-Quellcode:
....
x: PByteArray;
Value: Byte;
Delphi-Quellcode:
Das Problem das ich habe ist das mein Bitmap dann umgekehrt nicht verdreht ist.
Value := round(Sqrt(Sqrt(Buffer[i + 1]) * 3 * BuffBMP.Width));
if bScanLines then begin QueryPerformanceCounter(timeDraw0); k := BuffBMP.Height - i - 1; x := BuffBMP.ScanLine[k]; Move(x[OffsetX], x[0], (BuffBMP.Width - OffsetX)); x[BuffBMP.Width - OffsetX] := Value; QueryPerformanceCounter(timeDraw1); timeDraw := timeDraw + (timeDraw1-timeDraw0); end Also das was eigentlich vorne sein soll ist hinten.. Da nutzt auch ein drehen um 90 grad nichts. Deine Vermutung das ich nicht vertikal zeichne mag das Problem mit meiner Performance sein. Dem will ich nicht widersprechen. EDIT: Ok denke verstehe was du meinst. Ich soll das leere Bitmap vorher drehen dann mit ScanLine Horizontal zeichen und anschließend wieder zurück drehen. Das kann ich aber nicht machen weil beim Fortschritt direkt gezeichnet wird. (sichtbar) gruss |
AW: pf8Bit seltsames aussehen der Palette
Man kann alle Zeilenanfänge auch vorher einmal per Scanline besorgen und zwischenspeichern.
Mit einem eindimensionalen Array, hätte man dann eine zweidimensionale Matrix (ZeilenArray-Offset + Spalten-Offset). Alle Zeilen liegen im Speicher hintereinander, allerdings oft gerne von unten nach oben und im Speicher ausgerichtet (Alignment). Heißt, daß man im Grunde nur einen Anfang bräuchte und die Pixelposition ausgerechnet werden könnte. Oder, falls es hier geht und praktikabel ist, man dreht seine Zeichenfunktion, damit sie eben nicht Spalten, sondern Zeilenweise arbeitet. |
AW: pf8Bit seltsames aussehen der Palette
Zitat:
Ist ohne ein zusätzliches Bitmap nicht ausführbar und zudem möchte ich ja den Fortschritt der Analysierung gleichzeitig visualisieren. Zitat:
Die x Position bekomme ich ja erst durch die Value.
Delphi-Quellcode:
Value := round(Sqrt(Sqrt(Buffer[i + 1]) * 3 * BuffBMP.Width));
Danke. gruss |
AW: pf8Bit seltsames aussehen der Palette
Zitat:
Himitsu schlägt vor das Bitmap so zu lassen wie es ist, aber eben nicht Linie für Linie vertikal zu zeichnen sondern zeilenweise von oben nach unten jeweils 1 Pixel jeder Linie zu zeichnen. |
AW: pf8Bit seltsames aussehen der Palette
Zitat:
Destotrotz brauche ich die Aktuelle (x) in dem Fall dann die Y Position welche ich erst durch die Value erhalte. Oder? gruss |
AW: pf8Bit seltsames aussehen der Palette
Nee nee :zwinker:, er hat die Zeichenfläche gedreht und nach dem Zeichnen halt nochmal das fertige Bild.
Man kann aber manchmal auch das Zeichnen drehen und nicht das Blatt. Es ginge auch mitten drinnen, das Drehen ![]() allerdings nicht hier, da hier ja an Allem vorbei direkt in den Speicher gegangen wird. |
AW: pf8Bit seltsames aussehen der Palette
Hatte eigentlich gedacht es wäre schwieriger die RGB Werte zu analysieren.
So kann man sich irren. In Realzeit wo nur eine Zeile ausgelesen und dann direkt gezeichnet wird ist das kein Problem aber alles in einem Zug geht ganz schön auf die Geschwindigkeit beim einlesen. Na ja wer hatte das gedacht. ;) Bin wohl zu blöd dafür. Sollte mich erst noch etwas mehr mit der eigentlichen Materie auseinandersetzen (ScanLIne) ;) EDIT: Mit dem umgedrehten Bitmap hab ich jetzt behoben. Durch das Move jeder einzelnen Zeile dauert das aber nun ewig :) gruss |
AW: pf8Bit seltsames aussehen der Palette
Zitat:
|
AW: pf8Bit seltsames aussehen der Palette
Also intern lässt du dein Bild einfach im Hochformat.
Da kannst du auch ganz einfach verschieben, da dort ja komplette Scanlines kopiert/verschoben werden können. Beim vertikal Scrollen wird in jeder Scanline der Inhalt um ein/paar Pixel nach links kopiert. Und dann nur für die Ausgabe entweder per PlgBlt das Bild drehen und anzeigen, oder über SetWorldTransform die Anzeige (das DC/TCanvas) drehen und dein Bild da im Hochformat rein malen. Und "Anzeigen" auch immer nur den sichtbaren Bereich des internen Bildes. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz