draw_ellipse_modT_draw_ellipse_modDrawEllipseModDrawEllipseMod (Operator)
Name
draw_ellipse_modT_draw_ellipse_modDrawEllipseModDrawEllipseMod
— Interaktives Erstellen einer Ellipse.
Signatur
Herror T_draw_ellipse_mod(const Htuple WindowHandle, const Htuple RowIn, const Htuple ColumnIn, const Htuple PhiIn, const Htuple Radius1In, const Htuple Radius2In, Htuple* Row, Htuple* Column, Htuple* Phi, Htuple* Radius1, Htuple* Radius2)
void DrawEllipseMod(const HTuple& WindowHandle, const HTuple& RowIn, const HTuple& ColumnIn, const HTuple& PhiIn, const HTuple& Radius1In, const HTuple& Radius2In, HTuple* Row, HTuple* Column, HTuple* Phi, HTuple* Radius1, HTuple* Radius2)
void HWindow::DrawEllipseMod(double RowIn, double ColumnIn, double PhiIn, double Radius1In, double Radius2In, double* Row, double* Column, double* Phi, double* Radius1, double* Radius2) const
static void HOperatorSet.DrawEllipseMod(HTuple windowHandle, HTuple rowIn, HTuple columnIn, HTuple phiIn, HTuple radius1In, HTuple radius2In, out HTuple row, out HTuple column, out HTuple phi, out HTuple radius1, out HTuple radius2)
void HWindow.DrawEllipseMod(double rowIn, double columnIn, double phiIn, double radius1In, double radius2In, out double row, out double column, out double phi, out double radius1, out double radius2)
Beschreibung
draw_ellipse_moddraw_ellipse_modDrawEllipseModDrawEllipseModDrawEllipseMod
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 werden die Parametern RowInRowInRowInRowInrowIn
,
ColumnInColumnInColumnInColumnIncolumnIn
,PhiInPhiInPhiInPhiInphiIn
,Radius1InRadius1InRadius1InRadius1Inradius1In
,Radius2InRadius2InRadius2InRadius2Inradius2In
erwartet. Während die Taste gedrückt bleibt, kann die Länge
(Radius1Radius1Radius1Radius1radius1
) und die Orientierung (PhiPhiPhiPhiphi
) 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_ellipse_moddraw_ellipse_modDrawEllipseModDrawEllipseModDrawEllipseMod
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
WindowHandleWindowHandleWindowHandleWindowHandlewindowHandle
(input_control) window →
HWindow, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Fenster-Handle.
RowInRowInRowInRowInrowIn
(input_control) ellipse.center.y →
HTupleHTupleHtuple (real) (double) (double) (double)
Zeilenindex des Mittelpunkts.
ColumnInColumnInColumnInColumnIncolumnIn
(input_control) ellipse.center.x →
HTupleHTupleHtuple (real) (double) (double) (double)
Spaltenindex des Mittelpunkts.
PhiInPhiInPhiInPhiInphiIn
(input_control) ellipse.angle.rad →
HTupleHTupleHtuple (real) (double) (double) (double)
Orientierung der größeren Halbachse in Bogenmaß.
Radius1InRadius1InRadius1InRadius1Inradius1In
(input_control) ellipse.radius1 →
HTupleHTupleHtuple (real) (double) (double) (double)
Größere Halbachse.
Radius2InRadius2InRadius2InRadius2Inradius2In
(input_control) ellipse.radius2 →
HTupleHTupleHtuple (real) (double) (double) (double)
Kleinere Halbachse.
RowRowRowRowrow
(output_control) ellipse.center.y →
HTupleHTupleHtuple (real) (double) (double) (double)
Zeilenindex des Mittlepunktes.
ColumnColumnColumnColumncolumn
(output_control) ellipse.center.x →
HTupleHTupleHtuple (real) (double) (double) (double)
Spaltenindex des Mittlepunktes.
PhiPhiPhiPhiphi
(output_control) ellipse.angle.rad →
HTupleHTupleHtuple (real) (double) (double) (double)
Orientierung der ersten Halbachse in Bogenmaß.
Radius1Radius1Radius1Radius1radius1
(output_control) ellipse.radius1 →
HTupleHTupleHtuple (real) (double) (double) (double)
Erste Halbachse.
Radius2Radius2Radius2Radius2radius2
(output_control) ellipse.radius2 →
HTupleHTupleHtuple (real) (double) (double) (double)
Zweite Halbachse.
Beispiel (HDevelop)
read_image(Image,'monkey')
draw_ellipse_mod(WindowHandle,RowIn,ColumnIn,PhiIn,Radius1In,Radius2In,\
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_mod(WindowHandle,RowIn,ColumnIn,PhiIn,Radius1In,Radius2In,
&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_mod(WindowHandle,RowIn,ColumnIn,PhiIn,Radius1In,Radius2In,\
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_mod(WindowHandle,RowIn,ColumnIn,PhiIn,Radius1In,Radius2In,\
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_mod(WindowHandle,RowIn,ColumnIn,PhiIn,Radius1In,Radius2In,\
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_ellipse_moddraw_ellipse_modDrawEllipseModDrawEllipseModDrawEllipseMod
liefert den Wert 2 (H_MSG_TRUE), falls das Fenster gültig
und der benötigte Zeichenmodus (siehe set_insertset_insertSetInsertSetInsertSetInsert
) verfügbar ist.
Ansonsten wird eine Fehlerbehandlung durchgeführt.
Vorgänger
open_windowopen_windowOpenWindowOpenWindowOpenWindow
Nachfolger
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain
,
disp_regiondisp_regionDispRegionDispRegionDispRegion
,
set_coloredset_coloredSetColoredSetColoredSetColored
,
set_line_widthset_line_widthSetLineWidthSetLineWidthSetLineWidth
,
set_drawset_drawSetDrawSetDrawSetDraw
,
set_insertset_insertSetInsertSetInsertSetInsert
Alternativen
draw_ellipsedraw_ellipseDrawEllipseDrawEllipseDrawEllipse
,
draw_circledraw_circleDrawCircleDrawCircleDrawCircle
,
draw_regiondraw_regionDrawRegionDrawRegionDrawRegion
Siehe auch
gen_ellipsegen_ellipseGenEllipseGenEllipseGenEllipse
,
draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1DrawRectangle1
,
draw_rectangle2draw_rectangle2DrawRectangle2DrawRectangle2DrawRectangle2
,
draw_polygondraw_polygonDrawPolygonDrawPolygonDrawPolygon
,
set_insertset_insertSetInsertSetInsertSetInsert
Modul
Foundation