AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bitmaps intern als Arrays verwalten
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmaps intern als Arrays verwalten

Ein Thema von Boom3 · begonnen am 12. Okt 2009 · letzter Beitrag vom 12. Okt 2009
Antwort Antwort
Boom3

Registriert seit: 14. Sep 2009
4 Beiträge
 
#1

Bitmaps intern als Arrays verwalten

  Alt 12. Okt 2009, 11:24
Hallo,

ich schreibe mir gerade ein Programm zum Zeichnen. Als Zeichenfläche verwende ich eine PaintBox.
Da ich mit verschiedenen Ebenen arbeiten möchte, die ich später im OnPaint-Ereignis in die PaintBox laden möchte, arbeite ich mit Bitmaps.

Jedoch ist das Zeichnen auf Bitmaps ziemlich langsam.. deshalb habe ich mir überlegt die Ebenen(Bitmaps) intern als dynamische Arrays zu verwalten.

Welche Art von Array würde sich da anbieten?
Wie bekomme ich das Array später wieder ein eine Bitmap "konvertiert"?


Beste Grüße
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Bitmaps intern als Arrays verwalten

  Alt 12. Okt 2009, 11:30
Ein Bitmap ist doch selbst eine Art Array...
Deshalb kann man ja auch so schön Scanline machen.

Ich verstehe nicht, was du mit einem Array sparen willst?
Du solltest eher wohl Scanline öfter im Code verwenden.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Boom3

Registriert seit: 14. Sep 2009
4 Beiträge
 
#3

Re: Bitmaps intern als Arrays verwalten

  Alt 12. Okt 2009, 11:51
Ja, Scanline verwende ich bisher auch.
Aber ich möchte auch einzelne Pixel einfärben können z.B. beim Zeichnen mit einem Stift. Und da ich in meiner internen Datenstruktur der Geschwindigkeit halber ohne Canvas auskommen wollte würden sich dynamische Arrays anbieten. Da man dort auch die einzelnen Pixel direkt setzen könnte.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#4

Re: Bitmaps intern als Arrays verwalten

  Alt 12. Okt 2009, 11:58
Einzelne Pixel kann man auch via ScanLine setzen.

Jede Linie ist nur ein Array aus den Pixeln der entsprechenden Zeile.

.Pixels ist dagegen wirklich verdamt langsam ... warum auch immer.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#5

Re: Bitmaps intern als Arrays verwalten

  Alt 12. Okt 2009, 15:30
Zitat von Boom3:
Jedoch ist das Zeichnen auf Bitmaps ziemlich langsam.. deshalb habe ich mir überlegt die Ebenen(Bitmaps) intern als dynamische Arrays zu verwalten.
Wenn das Zeichnen auf Bitmaps langsam ist, machst du irgend etwas falsch.

Zitat von Boom3:
Welche Art von Array würde sich da anbieten?
Da Delphi keine mehrdimensionalen dynamischen Arrays unterstützt (nur Array of Array), würde ich dafür eine eigene Klasse erzeugen, die den Speicher für die Pixel intern verwaltet und für den entsprechenden Index(x,y,z) einen Pointer auf das Pixel ermitteln kann.

Zitat von Boom3:
Wie bekomme ich das Array später wieder ein eine Bitmap "konvertiert"?
Dafür gibts ScanLine.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Bitmaps intern als Arrays verwalten

  Alt 12. Okt 2009, 15:34
Zitat:
Da Delphi keine mehrdimensionalen dynamischen Arrays unterstützt (nur Array of Array)
...öhm, hä?


Und bevor du anfängst Bitmaps in Arrays zu konvertieren, ein paar Pixel änderst und die ganze Suppe wieder zurück: Scanline. Und NUR das. Keine Arrays. Schneller als mit Scanline geht's nicht, da du direkt über einen Pointer in die "rohen" Bitmap-Daten greifst.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 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