Entwickler-Ecke

Windows API - Einfache Frage zu DIB


Lupin003 - Fr 21.11.03 00:17
Titel: Einfache Frage zu DIB
Ich bräuchte mal ein Beispiel das mir zeigt wie man DIB sections benutzt um Pixel auf ein Fenster zu zeichnen. Da ich glaube das die Pixel-property des standard fensters von Delphi Get/Set-Pixel verwendet glaube ich das das ziemlich lahm ist, deshalb will ich DIB benutzen.

Ich hab bereits ein paar Versuche unternommen, aber immer wenn ich den Pointer dereferenzieren will sagt er mir das ich einen Array typen brauche (Warum kann Delphi nicht mit Pointern als Array arbeiten? Macht C doch auch ohne Probleme :()

Danke :)


Andreas Pfau - Di 09.12.03 20:24

Hallo,

tja, "Delphi != Cpp", aber man kann abhelfen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
  PMyArray = ^TMyArray;
  TMyArray = array[0..9999] of Integer;
var
  P: PMyArray;
  I: Integer;
begin
  P := @Something;
  I := P[100]^;

Und zu deinen DIBs: warum willst du grade DIB-Sections zeichnen? Nimm ein TtBitmap, und zeichne es! Direkt auf das Fenster?

Delphi-Quelltext
1:
TForm1.Canvas.Draw(100, 100, Bitmap1);                    

Oder verstehe ich dich nicht richtig...?


Anonymous - Di 09.12.03 21:16

bevor die Frage kommt:

Andreas Pfau hat folgendes geschrieben:

Delphi-Quelltext
1:
I := P[100]^;                    


sollte


Delphi-Quelltext
1:
I := P^[100];                    


heißen.


Andreas Pfau - Di 09.12.03 21:37

Hallo,

:oops: kann mal passieren... sollte aber nicht! *schäm*

Aber einen hab' ich noch: Bevor du einen Array auf Bytes oder Words deklarierst - die gibt es schon, in der Unit "SysUtils", heißen "PByteArray" bzw. "PWordArray"!