Also das mit dem Bitmap.Handle hab ich auch schon probiert. Leider noch mit eingeschränktem Erfolg, weiß wird sowohl Paintbox, als auch die Datei in die ich es speichere. Kannst du bitte mal schauen, ob ich da einen Fehler gemacht hab?
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var iIndex: integer;
Tempbmp: TBitmap;
begin
Tempbmp := TBitmap.Create;
Tempbmp.SetSize(2560,1920);
iss_InitCamera(HHCAM,0);
iss_LoadParameters(HHCAM,'Text.ini');
for iIndex := 0 to Bildzahl do
begin
iss_AllocImageMem(HHCAM, 2560, 1920, 24, Speicher[0].sSpeicherAdresse, Speicher[0].iSpeicherAdresse);
Speicher[iIndex].iSpeicherNummer := iIndex;
iss_AddtoSequence(HHCAM, Speicher[iIndex].sSpeicherAdresse, Speicher[iIndex].iSpeicherAdresse);
end;
iss_SetImageMem(HHCAM, Speicher[0].sSpeicherAdresse, Speicher[0].iSpeicherAdresse);
iss_SetImageSize(HHCAM, 2560, 1920);
iss_SetImagePos(HHCAM, 20,20);
iss_SetColorMode(HHCAM, 1);
iss_FreezeVideo(HHCAM,1);
iss_RenderBitmap(HHCAM,Speicher[0].iSpeicherAdresse,Tempbmp.Handle,1);
Tempbmp.SaveToFile('d:\Versuch1.bmp');
PaintBox1.Canvas.Draw(0,0,Tempbmp);
Image1.Picture.Bitmap := Tempbmp;
for iIndex := 0 to 0 do
begin
iss_SaveImageMem(HHCAM,PAnsiChar('d:\Versuch' + inttostr(iIndex)+ '.bmp'), Speicher[iIndex].sSpeicherAdresse, Speicher[iIndex].iSpeicherAdresse);
end;
end;
kurze Erklärung: die "iss_"-Funktionen kommen aus der
DLL.
Hier die Spezifikationen für die beiden Funktionen, in denen die Handles übergeben werden sollen:
Delphi-Quellcode:
4.73 is_RenderBitmap
Syntax
INT is_RenderBitmap (HIDS hf, INT nMemID, HWND hwnd, INT nMode)
Beschreibung
Mit is_RenderBitmap() kann ein Bild aus einem Bildspeicher
in einem angegebenen Fenster
ausgegeben werden. Zur Darstellung werden
Win32 Bitmapfunktionen verwendet. Die Darstellung
erfolgt generell
in dem Format, das beim Allokieren des Bildspeichers festgelegt wurde.
In der Funktion is_AllocImageMem() legt der Parameter bitspixel die Farbtiefe und die Darstellungsart
fest.
Übergabeparameter
hf
Handle auf Kamera
nMemID ID des Bildspeichers der angezeigt werden soll
hwnd Fenster
Handle des Ausgabefensters
nMode Ausgabeformat
und die 2.
Delphi-Quellcode:
INT is_InitCamera (HIDS* phf, HWND hWnd)
Beschreibung
is_InitCamera() öffnet den Treiber und stellt den Kontakt zur Hardware her.
In dieser Funktion
wird nach erfolgreicher Initialisierung das
Handle auf die Kamera vergeben. Alle nachfolgenden
Funktionen benötigen diesen
Handle als ersten Parameter. Wenn kein DirectDraw zur Bildausgabe
verwendet wird, kann hWnd=NULL übergeben werden.
Übergabeparameter
phf Zeiger auf den
Handle der Kamera. Der Inhalt des Zeigers hat beim Aufruf der Funktion folgende Bedeutung:
0: verwende die erste freie Kamera
1-254: Öffne die Kamera mit dieser ID
hWnd
Handle auf das Fenster,
in dem das Bild dargestellt werden soll (kann NULL sein)
Was ich nicht verstehe, ich gebe den Proceduren doch schon alle möglichen Handles, warum hat bisher nicht eins ein Bild auf der Form erzeugt???