| Operatoren |
new_extern_window — Erzeugen eines virtuellen Grafikfensters unter Windows.
new_extern_window öffnet ein neues virtuelles Fenster. Bitte beachten Sie, dass das nur auf Windows-Systemen funktioniert.
Virtuell bedeutet hier, dass kein neues Fenster erstellt wird, sondern dass das Fenster, dessen Window-Handle im Parameter WINHWnd übergeben wird, zur Ausgabe von Grauwertdaten, Regionen, Grafik sowie für Textausgabe verwendet wird. Einstellungen für die Ausgabe von Daten (z.B. die Farbe) können entweder über die Befehle von HALCON oder durch den entsprechenden Windows-Befehl erfolgen.
Beispiel: Setzen der Zeichenfarbe:
HALCON: set_color(WindowHandle,"green"); disp_region(WindowHandle,region); Windows: HPEN* penold; HPEN penGreen = CreatePen(PS_SOLID,1,RGB(0,255,0)); pen = (HPEN*)SelectObject(WINHDC,penGreen); disp_region(WindowHandle,region);
Auf Mausinteraktionen basierende Operatoren wie zum Beispiel draw_rectangle1 können auf externen Fenstern nicht verwendet werden. Die folgenden Operatoren können verwendet werden:
Grauwertausgabe: set_paint, set_comprise, (set_lut und set_lut_style nach der Ausgabe)
Regionen: set_color, set_rgb, set_hsi, set_gray, set_pixel, set_shape, set_line_width, set_insert, set_line_style, set_draw
Bildausschnitt: set_part
Text: set_font
Die aktuell gesetzten Werte können mit Operatoren wie get_shape abgefragt werden. Da einige Parameter durch die Hardware (Auflösung/Farben) bestimmt werden, kann man mit Operatoren wie query_color die aktuell verfügbaren Ressourcen abfragen.
Im Parameter WINHWnd wird der Fensterhandle des Windows-Fensters übergeben, in das die Ausgaben von HALCON erfolgen sollen.
Der Ursprung des Koordinatensystems des Fensters liegt in der linken oberen Ecke (Koordinaten: (0,0)). Nach unten nimmt der Zeilenindex zu (maximal: Fensterhöhe-1), nach rechts steigt der Spaltenindex (maximal: Fensterbreite-1) an.
Für die Parameter Width und Height kann der Wert -1 als Größe verwendet werden. Dies bedeutet, dass der entsprechende Wert automatisch bestimmt werden soll. Dies ist insbesondere dann von Bedeutung, wenn das Pixelverhältnis nicht gleich 1.0 ist (siehe set_system). Wird einer der beiden Parameter als -1 angegeben, so wird er durch die Größe bestimmt, die sich aus dem Pixelverhältnis ergibt. Werden beide Parameter mit -1 festgelegt, so werden sie auf das aktuelle Bildformat gesetzt.
Die Position und Größe des Fensters kann sich im Laufe des Programms ändern, z.B. durch externe Eingriffe (Windowmanager). Mit dem Operator set_window_extents kann die Größe des (externen) Fensters auch vom Programm aus geändert werden. Beachten Sie bitte, dass set_window_extents auch die Position von Fenstern ändern könnte, allerdings die Position eines externen Fensters unter Windows nicht geändert werden kann.
Die Farbe für Graphik und Schrift, die für Ausgabeprozeduren wie disp_region oder disp_circle verwendet wird, wird mit set_rgb, set_hsi, set_gray oder set_pixel festgelegt. Mit set_insert wird eingestellt, wie die Graphik mit dem Inhalt des Bildwiederholspeichers verknüpft wird. Hierbei kann z.B. mit set_insert(::'not':) erreicht werden, dass nach zweimaligem Zeichnen eines Kreises an der gleichen Position dieser wieder beseitigt wird.
Der Inhalt von Fenstern wird nicht gesichert, falls sich Fenster überlappen. Dies muss durch den Programmcode, der das Windows-Fenster verwaltet, sichergestellt werden.
Für die Ausgabe von Graphik (disp_image,disp_region, etc.) kann mit dem Operator set_part das Fenster so eingestellt werden, dass es einen logischen Ausschnitt des Bildformates darstellt. Dies hat insbesondere zur Folge, dass von Bildern und Regionen lediglich dieser Ausschnitt (entsprechend vergrößert) ausgegeben wird. Bevor Sie Ihr Fenster schließen, müssen Sie das HALCON-Fenster schließen.
Die Schritte zur Verwendung von new_extern_window:
Erzeugen eines Windows-Fensters.
Aufruf von new_extern_window mit dem WINHWnd des vorher erzeugten Fensters.
Vor dem Zeichnen in das Fenster muss stets die Methode set_window_dc aufgerufen werden, um so sicherzustellen, dass die HALCON Zeichenroutinen den richtigen DC verwenden. Nach dem Zeichnen sollte erneut set_window_dc aufgerufen werden, diesmal jedoch mit der Adresse eines Longs, mit Inhalt 0. Hierdurch kann HALCON seine angelegten Zeichenobjekte ordnungsgemäß freigeben.
Zum Löschen muss close_window aufgerufen werden.
Es ist zu beachten, dass die Parameter Row, Column, Width und Height durch das Ausgabegerät, d.h. die Größe des Windows-NT-Desktops, beschränkt sind. Ebenso ist zu beachten, dass sich auf Mausinteraktionen basierende Operatoren wie zum Beispiel draw_rectangle1 auf externen Fenstern nicht verwenden lassen.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
Windows-Fensterhandle eines vorher geöffneten Fensters.
Restriktion: WINHWnd != 0
Zeilenkoordinate der linken oberen Ecke.
Defaultwert: 0
Restriktion: Row >= 0
Spaltenkoordinate der linken oberen Ecke.
Defaultwert: 0
Restriktion: Column >= 0
Breite des Fensters.
Defaultwert: 512
Restriktion: Width > 0 || Width == -1
Höhe des Fensters.
Defaultwert: 512
Restriktion: Height > 0 || Height == -1
Fenster-Handle.
// Needs to be embedded into an application framework, // see examples/cpp/mfc/MatchingExtWin.
Sind die Parameterwerte korrekt, dann liefert new_extern_window den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.
set_color, query_window_type, get_window_type, set_window_type, get_mposition, set_tposition, set_tshape, set_window_extents, get_window_extents, query_color, set_check, set_system
open_window, disp_region, disp_image, disp_color, set_lut, query_color, set_color, set_rgb, set_hsi, set_pixel, set_gray, set_part, set_part_style, query_window_type, get_window_type, set_window_type, get_mposition, set_tposition, set_window_extents, get_window_extents, set_window_attr, set_check, set_system
Foundation
| Operatoren |