Einzelnen Beitrag anzeigen

BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Handle von Image für Bmp im Speicher

  Alt 20. Nov 2008, 09:22
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???
  Mit Zitat antworten Zitat