copy_rectangleT_copy_rectangleCopyRectangleCopyRectanglecopy_rectangle (Operator)
Name
copy_rectangleT_copy_rectangleCopyRectangleCopyRectanglecopy_rectangle — Kopieren aller Pixel eines Rechtecks zwischen Ausgabefenstern.
Signatur
void CopyRectangle(const HTuple& WindowHandleSource, const HTuple& WindowHandleDestination, const HTuple& Row1, const HTuple& Column1, const HTuple& Row2, const HTuple& Column2, const HTuple& DestRow, const HTuple& DestColumn)
void HWindow::CopyRectangle(const HWindow& WindowHandleDestination, const HTuple& Row1, const HTuple& Column1, const HTuple& Row2, const HTuple& Column2, const HTuple& DestRow, const HTuple& DestColumn) const
void HWindow::CopyRectangle(const HWindow& WindowHandleDestination, Hlong Row1, Hlong Column1, Hlong Row2, Hlong Column2, Hlong DestRow, Hlong DestColumn) const
static void HOperatorSet.CopyRectangle(HTuple windowHandleSource, HTuple windowHandleDestination, HTuple row1, HTuple column1, HTuple row2, HTuple column2, HTuple destRow, HTuple destColumn)
void HWindow.CopyRectangle(HWindow windowHandleDestination, HTuple row1, HTuple column1, HTuple row2, HTuple column2, HTuple destRow, HTuple destColumn)
void HWindow.CopyRectangle(HWindow windowHandleDestination, int row1, int column1, int row2, int column2, int destRow, int destColumn)
Beschreibung
copy_rectanglecopy_rectangleCopyRectangleCopyRectangleCopyRectanglecopy_rectangle kopiert alle Pixel, die innerhalb des durch
die Parameter Row1Row1Row1Row1row1row_1, Column1Column1Column1Column1column1column_1, Row2Row2Row2Row2row2row_2 und
Column2Column2Column2Column2column2column_2 beschriebenen Rechtecks liegen, aus dem angegebenen
Window mit der logischen Fensternummer WindowHandleSourceWindowHandleSourceWindowHandleSourceWindowHandleSourcewindowHandleSourcewindow_handle_source
in das angegebene Window mit der logischen Fensternummer
WindowHandleDestinationWindowHandleDestinationWindowHandleDestinationWindowHandleDestinationwindowHandleDestinationwindow_handle_destination. Die Zielposition wird durch die
linke obere Ecke des Rechtecks (DestRowDestRowDestRowDestRowdestRowdest_row,
DestColumnDestColumnDestColumnDestColumndestColumndest_column) festgelegt.
Falls mehr als ein Rechteck bewegt werden soll, können diese
gleichzeitig (in Form von Tupeln) übergeben werden.
copy_rectanglecopy_rectangleCopyRectangleCopyRectangleCopyRectanglecopy_rectangle ist dafür gedacht, aufbereitete Grafiken
aus einem „unsichtbaren“ Fenster in ein sichtbares Fenster zu
kopieren. Hierzu wird ein Fenster mit der Option 'buffer'
geöffnet. In dieses Fenster wird die Grafik ausgegeben und danach
in ein sichtbares Fenster kopiert. Der Vorteil dieser
Vorgehensweise besteht darin, dass copy_rectanglecopy_rectangleCopyRectangleCopyRectangleCopyRectanglecopy_rectangle viel
schneller als Ausgabeprozeduren wie z.B. disp_channeldisp_channelDispChannelDispChannelDispChanneldisp_channel
ist. Dies ist insbesondere bei Demo-Programmen von Vorteil. Es
lassen sich hiermit auch kurze „clips“ realisieren: Hierzu wird
für jedes Bild der Folge ein Fenster vom Typ 'buffer' angelegt und
die Daten darauf ausgegeben. Ausgegeben wird die Bildfolge, indem
alle Puffer nacheinander in ein sichtbares Fenster kopiert werden.
Achtung
Beide Fenster müssen auf demselben Display liegen.
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
WindowHandleSourceWindowHandleSourceWindowHandleSourceWindowHandleSourcewindowHandleSourcewindow_handle_source (input_control) window → HWindow, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Nummer des Quellfensters.
WindowHandleDestinationWindowHandleDestinationWindowHandleDestinationWindowHandleDestinationwindowHandleDestinationwindow_handle_destination (input_control) window → HWindow, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Nummer des Zielfensters.
Row1Row1Row1Row1row1row_1 (input_control) rectangle.origin.y(-array) → HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Zeilenindex der linken oberen Ecke im Quellfenster.
Defaultwert: 0
Typischer Wertebereich: 0
≤
Row1
Row1
Row1
Row1
row1
row_1
≤
511 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Column1Column1Column1Column1column1column_1 (input_control) rectangle.origin.x(-array) → HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Spaltenindex der linken oberen Ecke im Quellfenster.
Defaultwert: 0
Typischer Wertebereich: 0
≤
Column1
Column1
Column1
Column1
column1
column_1
≤
511 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Row2Row2Row2Row2row2row_2 (input_control) rectangle.corner.y(-array) → HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Zeilenindex der rechten unteren Ecke im Quellfenster.
Defaultwert: 128
Typischer Wertebereich: 0
≤
Row2
Row2
Row2
Row2
row2
row_2
≤
511 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: Row2 >= Row1
Column2Column2Column2Column2column2column_2 (input_control) rectangle.corner.x(-array) → HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Spaltenindex der rechten unteren Ecke im Quellfenster.
Defaultwert: 128
Typischer Wertebereich: 0
≤
Column2
Column2
Column2
Column2
column2
column_2
≤
511 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: Column2 >= Column1
DestRowDestRowDestRowDestRowdestRowdest_row (input_control) point.y(-array) → HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Zeilenindex der linken oberen Ecke im Zielfenster.
Defaultwert: 0
Typischer Wertebereich: 0
≤
DestRow
DestRow
DestRow
DestRow
destRow
dest_row
≤
511 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
DestColumnDestColumnDestColumnDestColumndestColumndest_column (input_control) point.x(-array) → HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Spaltenindex der linken oberen Ecke im Zielfenster.
Defaultwert: 0
Typischer Wertebereich: 0
≤
DestColumn
DestColumn
DestColumn
DestColumn
destColumn
dest_column
≤
511 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Beispiel (HDevelop)
read_image(Image,'monkey')
open_window(0,0,-1,-1,'root','buffer','',WindowHandleBuffer)
disp_obj(Image,WindowHandleBuffer)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
copy_rectangle(WindowHandleBuffer,WindowHandle,\
Row1, Column1, Row2, Column2,Row1,Column1)
close_window(WindowHandleBuffer)
Beispiel (C)
read_image(Image,"monkey");
open_window(0,0,-1,-1,"root","buffer","",&WindowHandle);
disp_image(Image,WindowHandle);
open_window(0,0,-1,-1,"root","visible","",&WindowHandleDestination);
do {
get_mbutton(WindowHandleDestination,&Row,&Column,&Button);
copy_rectangle(BufferID,WindowHandleDestination,90,120,390,Row,Column);
}
while(Button > 1);
close_window(WindowHandleDestination);
close_window(WindowHandle);
Beispiel (HDevelop)
read_image(Image,'monkey')
open_window(0,0,-1,-1,'root','buffer','',WindowHandleBuffer)
disp_obj(Image,WindowHandleBuffer)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
copy_rectangle(WindowHandleBuffer,WindowHandle,\
Row1, Column1, Row2, Column2,Row1,Column1)
close_window(WindowHandleBuffer)
Beispiel (HDevelop)
read_image(Image,'monkey')
open_window(0,0,-1,-1,'root','buffer','',WindowHandleBuffer)
disp_obj(Image,WindowHandleBuffer)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
copy_rectangle(WindowHandleBuffer,WindowHandle,\
Row1, Column1, Row2, Column2,Row1,Column1)
close_window(WindowHandleBuffer)
Beispiel (HDevelop)
read_image(Image,'monkey')
open_window(0,0,-1,-1,'root','buffer','',WindowHandleBuffer)
disp_obj(Image,WindowHandleBuffer)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
copy_rectangle(WindowHandleBuffer,WindowHandle,\
Row1, Column1, Row2, Column2,Row1,Column1)
close_window(WindowHandleBuffer)
Ergebnis
Ist das Ausgabefenster gültig und sind die angegebenen Parameter korrekt,
dann liefert copy_rectanglecopy_rectangleCopyRectangleCopyRectangleCopyRectanglecopy_rectangle den Wert TRUE.
Andernfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
open_windowopen_windowOpenWindowOpenWindowOpenWindowopen_window
Nachfolger
close_windowclose_windowCloseWindowCloseWindowCloseWindowclose_window
Alternativen
move_rectanglemove_rectangleMoveRectangleMoveRectangleMoveRectanglemove_rectangle,
slide_imageslide_imageSlideImageSlideImageSlideImageslide_image
Siehe auch
open_windowopen_windowOpenWindowOpenWindowOpenWindowopen_window
Modul
Foundation