draw_ellipseT_draw_ellipseDrawEllipseDrawEllipsedraw_ellipse (Operator)
Name
draw_ellipseT_draw_ellipseDrawEllipseDrawEllipsedraw_ellipse — Interaktives Erstellen einer Ellipse.
Signatur
def draw_ellipse(window_handle: HHandle) -> Tuple[float, float, float, float, float]
Beschreibung
draw_ellipsedraw_ellipseDrawEllipseDrawEllipseDrawEllipsedraw_ellipse liefert die Parameter für eine beliebig orientierte
Ellipse, die interaktiv durch den Benutzer im Fenster erzeugt
worden ist.
Die zu erzeugende Ellipse wird durch ihren Mittelpunkt, ihre zwei Halbachsen
und den Winkel der ersten Halbachse zur horizontalen Koordinatenachse
beschrieben.
Für die Erzeugung der Ellipse wird mit der linken Maustaste der Mittelpunkt
der Ellipse festgelegt. Während die Taste gedrückt bleibt, kann die Länge
(Radius1Radius1Radius1Radius1radius1radius_1) und die Orientierung (PhiPhiPhiPhiphiphi) der ersten
Halbachse festgelegt werden.
Dabei wird für die zweite Halbachse vorläufig eine Default-Länge
verwendet, die anschließend aber noch verändert werden kann.
Nach einem erneuten Mausklick in die Mitte der erzeugten Ellipse, kann diese
beliebig verschoben werden. Mit einem Klick in die Nähe eines Scheitels
kann dieser „angefasst“ werden, um die Länge der zugehörigen Halbachse zu
verändern. Die Orientierung kann nur verändert werden, wenn ein Scheitel
der ersten Halbachse angefasst wird.
Ein Klick mit der rechten Maustaste beendet die Prozedur. Unter macOS
kann draw_ellipsedraw_ellipseDrawEllipseDrawEllipseDrawEllipsedraw_ellipse auch durch Drücken der Escape-Taste beendet
werden.
Die Ellipse ist nach Beendigung der Prozedur nicht mehr auf dem Fenster
sichtbar.
Achtung
Für die Nutzung des Zeichenoperators in einem Puffer-Fenster muss die
Anwendung Maus-Events senden. Der Zeichenoperator muss
dabei in einem anderen Thread ausgeführt werden.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Parameter
WindowHandleWindowHandleWindowHandleWindowHandlewindowHandlewindow_handle (input_control) window → HWindow, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Fenster-Handle.
RowRowRowRowrowrow (output_control) ellipse.center.y → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Zeilenindex des Mittelpunktes.
ColumnColumnColumnColumncolumncolumn (output_control) ellipse.center.x → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Spaltenindex des Mittelpunktes.
PhiPhiPhiPhiphiphi (output_control) ellipse.angle.rad → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Orientierung der ersten Halbachse in Bogenmaß.
Radius1Radius1Radius1Radius1radius1radius_1 (output_control) ellipse.radius1 → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Erste Halbachse.
Radius2Radius2Radius2Radius2radius2radius_2 (output_control) ellipse.radius2 → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Zweite Halbachse.
Beispiel (HDevelop)
read_image(Image,'monkey')
draw_ellipse(WindowHandle,Row,Column,Phi,Radius1,Radius2)
gen_ellipse(Ellipse,Row,Column,Phi,Radius1,Radius2)
reduce_domain(Image,Ellipse,GrayEllipse)
sobel_amp(GrayEllipse,Sobel,'sum_abs',3)
dev_display(Sobel)
Beispiel (C)
read_image(&Image,"monkey");
draw_ellipse(WindowHandle,&Row,&Column,&Phi,&Radius1,&Radius2);
gen_ellipse(&Ellipse,Row,Column,Phi,Radius1,Radius2);
reduce_domain(Image,Ellipse,&GrayEllipse);
sobel_amp(GrayEllipse,&Sobel,"sum_abs",3);
disp_image(Sobel,WindowHandle);
Beispiel (HDevelop)
read_image(Image,'monkey')
draw_ellipse(WindowHandle,Row,Column,Phi,Radius1,Radius2)
gen_ellipse(Ellipse,Row,Column,Phi,Radius1,Radius2)
reduce_domain(Image,Ellipse,GrayEllipse)
sobel_amp(GrayEllipse,Sobel,'sum_abs',3)
dev_display(Sobel)
Beispiel (HDevelop)
read_image(Image,'monkey')
draw_ellipse(WindowHandle,Row,Column,Phi,Radius1,Radius2)
gen_ellipse(Ellipse,Row,Column,Phi,Radius1,Radius2)
reduce_domain(Image,Ellipse,GrayEllipse)
sobel_amp(GrayEllipse,Sobel,'sum_abs',3)
dev_display(Sobel)
Beispiel (HDevelop)
read_image(Image,'monkey')
draw_ellipse(WindowHandle,Row,Column,Phi,Radius1,Radius2)
gen_ellipse(Ellipse,Row,Column,Phi,Radius1,Radius2)
reduce_domain(Image,Ellipse,GrayEllipse)
sobel_amp(GrayEllipse,Sobel,'sum_abs',3)
dev_display(Sobel)
Ergebnis
draw_ellipsedraw_ellipseDrawEllipseDrawEllipseDrawEllipsedraw_ellipse liefert den Wert TRUE, falls das Fenster gültig
und der benötigte Zeichenmodus (siehe set_insertset_insertSetInsertSetInsertSetInsertset_insert) verfügbar ist.
Ansonsten wird eine Fehlerbehandlung durchgeführt.
Vorgänger
open_windowopen_windowOpenWindowOpenWindowOpenWindowopen_window
Nachfolger
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain,
disp_regiondisp_regionDispRegionDispRegionDispRegiondisp_region,
set_coloredset_coloredSetColoredSetColoredSetColoredset_colored,
set_line_widthset_line_widthSetLineWidthSetLineWidthSetLineWidthset_line_width,
set_drawset_drawSetDrawSetDrawSetDrawset_draw,
set_insertset_insertSetInsertSetInsertSetInsertset_insert
Alternativen
draw_ellipse_moddraw_ellipse_modDrawEllipseModDrawEllipseModDrawEllipseModdraw_ellipse_mod,
draw_circledraw_circleDrawCircleDrawCircleDrawCircledraw_circle,
draw_regiondraw_regionDrawRegionDrawRegionDrawRegiondraw_region
Siehe auch
gen_ellipsegen_ellipseGenEllipseGenEllipseGenEllipsegen_ellipse,
draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1DrawRectangle1draw_rectangle1,
draw_rectangle2draw_rectangle2DrawRectangle2DrawRectangle2DrawRectangle2draw_rectangle2,
draw_polygondraw_polygonDrawPolygonDrawPolygonDrawPolygondraw_polygon,
set_insertset_insertSetInsertSetInsertSetInsertset_insert
Modul
Foundation