Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 08, 2025 18:32

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: GDI - SetPixel
BeitragVerfasst: Fr Feb 19, 2010 21:45 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Hi Leute,
(ja ich weiß meine Themen häufen sich grad nen bischen)

ich hab ein Problem was die GDI angeht,
und zwar möchte ich Daten aus einem 2-dimensionalen Array anzeigen lassen, so weit so gut, alles läuft prima. Wenn ich nun aber ein neues Bild ausgeben lassen möchte, dann passiert einfach nichts (das erste Bild sieht man immernoch und nicht das Aktualisierte) :(

Mit der Canvas-Variante (Canvas.Pixels[x,y]:=Color;) geht es einwandfrei, aber mit der GDI-Variante (SetPixel(dc,x,y,color);) gehts nicht.

Hier meine Prozedur:
Code:
  1.  
  2. //Canvas.Variante
  3.   for x:=0 to RenderManager.Width-1 do
  4.     for y:=0 to RenderManager.Height-1 do
  5.       Image1.Canvas.Pixels[x,y]:=RGBAToColor(Image[x,y]); //FUNKTIONIER
  6.  
  7.  
  8. //GDI-Variante
  9.   for x:=0 to RenderManager.Width-1 do
  10.     for y:=0 to RenderManager.Height-1 do
  11.       SetPixel(Image1.Canvas.Handle,x,y,RGBAToColor(Image[x,y])); //FUNKTIONIERT NICHT
  12.  


Es geht halt darum wenn ich die Methode mehrmals aufrufe ...

cuz
bubble

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GDI - SetPixel
BeitragVerfasst: Sa Feb 20, 2010 09:09 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Hast Du dir mal den Rückgabewert von SetPixel angeschaut? Gibt das schon -1 zurück oder bemerkt SetPixel selbst keinen Fehler? Wenn nicht... Ich bin mir nicht sicher wie das Image organisiert ist, aber evtl. musst Du ihm noch ein Refresh schicken?
Ansonsten, wenn das ganze hablwegs flott laufen soll, ist es nicht ungeschickt, ein Bitmap als Quelle und Ziel zu nehmen und mithilfe von der Scanline zuzugreifen... Das ist viel viel schneller als SetPixel. Das aber nur so nebenbei.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GDI - SetPixel
BeitragVerfasst: Sa Feb 20, 2010 14:02 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Okay, ich hab das Refresh danach vergessen T____T

Scanline kann ich glaube nicht verwenden ... Image1 ist ein Objekt vom Typ TImage aus der VCL
Image dagegen is ein 2-dimensionales dynamisches Array vom Typ TRGBA (Image: Array of Array of TRGBA;)

TRGBA ist ein Record mit 4 Extended-Werten rot, grün, blau und alpha (irgendwie auch logisch oder?) und da fällt mir keine bessere Lösung ein als SetPixel :?

cuz bubble

Ich glaub ich kann das bald eh auf OpenGL auslagern :)

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GDI - SetPixel
BeitragVerfasst: So Feb 21, 2010 17:03 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Scanline kann man immer verwenden. Erstell ein einzelnes TBitmap, setze das Pixelformat, Schaufel die Daten via Scanline da rein und zeichne es via Draw auf eine PaintBox oder weiß es via Assign dem Image zu. Das ist tausend Mal besser als Pixels oder SetPixel. Pixels arbeitet intern eh auch nur mit SetPixels. Und SetPixel ist umständlich und grotten langsam.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 17 Queries | GZIP : On ]