roImageWidget
17 min
este objeto se puede usar en lugar de roimageplayer en los casos en que la imagen se muestra dentro de un rectángulo el uso de un roimagewidget puede dar como resultado una estética más agradable para la creación de reproductores de imágenes; también se puede usar para mostrar imágenes en una matriz multipantalla más allá de esto, roimagewidget se comporta de manera idéntica a roimageplayer el equivalente en javascript es la etiqueta \<img> https //developer mozilla org/en us/docs/web/html/element/img en html creación de objetos el área del widget de imagen se genera usando un objeto rorectangle rectangle = createobject("rorectangle", 0, 0, 1024, 768) i = createobject("roimagewidget", rectangle) ifimagecontrol displayfile(image filename as string) as boolean muestra la imagen con el nombre de archivo especificado la cadena image filename debe apuntar a un archivo png , jpeg , o bmp de 8 bits, 24 bits o 32 bits tenga en cuenta que los archivos de imagen jpeg con perfiles de color cmyk no son compatibles displayfile(parameters as roassociativearray) as boolean muestra una imagen usando una matriz asociativa de parámetros de visualización nombre de archivo el nombre del archivo de imagen modo el modo de imagen consulte la entrada de setdefaultmode() a continuación para obtener más detalles transición la configuración de transición de la imagen consulte la entrada de setdefaulttransition() a continuación para obtener más detalles encryptionalgorithm el algoritmo de cifrado de archivos actualmente las opciones son "aesctr" y "aesctrhmac" clave de cifrado la clave para descifrar el archivo de imagen esta es una matriz de bytes compuesta por 128 bits de clave, seguidos de 128 bits de iv consulte la descripción de descifrado de imágenes docid\ z65qez0xwq9c70obegcyi en la entrada de roimageplayer para obtener detalles sobre cómo mostrar imágenes cifradas preloadfile(image filename as string) as boolean carga el archivo de imagen especificado en un búfer de memoria fuera de pantalla preloadfile(parameters as roassociativearray) as boolean carga un archivo de imagen en un búfer de memoria fuera de pantalla las propiedades de visualización de la imagen están determinadas por una matriz asociativa de parámetros nombre de archivo el nombre del archivo de imagen modo consulte la entrada de setdefaultmode() a continuación para obtener más detalles transición consulte la entrada de setdefaulttransition() a continuación para obtener más detalles displaypreload() as boolean usa el búfer de memoria en pantalla para mostrar la imagen almacenada en el búfer de memoria fuera de pantalla usando preloadfile() solo hay dos búferes de memoria uno se muestra en pantalla y el otro se usa para precargar imágenes preloadfile() se puede llamar varias veces antes de que displaypreload() sea llamado, y continuará cargando en el mismo búfer fuera de pantalla el método displayfile() llama a preloadfile() seguido inmediatamente por displaypreload() , por lo que cualquier imagen precargada previamente se perderá si no hay ninguna imagen precargada, displaypreload() no tendrá ningún efecto stopdisplay() as boolean elimina una imagen de la pantalla displayfileex(filename as string, mode as integer, x as integer, y as integer) as boolean preloadfileex(filename as string, mode as integer, x as integer, y as integer) as boolean setdefaultmode(mode as integer) as boolean establece el modo predeterminado de visualización de imágenes para displayfile() y preloadfile() si no se llama a setdefaultmode(), entonces el modo predeterminado se establece en 0 (equivalente a que la imagen esté centrada sin escalado) los modos de visualización compatibles se enumeran a continuación 0 – centrar imagen no se realiza ningún escalado el recorte solo se produce si la imagen es más grande que la ventana 1 – escalar para ajustar la imagen se escala para que sea completamente visible, manteniendo su relación de aspecto 2 – escalar para rellenar y recortar la imagen se escala para que rellene completamente la ventana, manteniendo su relación de aspecto 3 – escalar para rellenar la imagen se estira para que rellene la ventana y toda la imagen sea visible la relación de aspecto no se mantendrá si es diferente de la ventana setdefaulttransition(transition as integer) as boolean establece la transición que se utilizará cuando se muestre la siguiente imagen están disponibles las siguientes transiciones 0 sin transición blit inmediato 1 4 barridos desde arriba, abajo, izquierda o derecha 5 8 explosiones desde el centro, la parte superior izquierda, la parte superior derecha, la parte inferior izquierda o la parte inferior derecha 10 11 utiliza un efecto de persiana veneciana vertical u horizontal 12 13 peines verticales u horizontales 14 se desvanece hasta el color de fondo y luego vuelve a aparecer 15 se desvanece entre la imagen actual y la nueva imagen 16 19 deslizamientos desde arriba, abajo, izquierda o derecha 20 23 desliza toda la pantalla desde arriba, abajo, izquierda o derecha 24 25 escala la imagen anterior hacia dentro y luego la nueva hacia fuera nuevamente (esto funciona como una pseudorrotación alrededor de un eje vertical u horizontal) 26 29 expande una nueva imagen en la pantalla desde la derecha, izquierda, abajo o arriba settransform(transform as string) as boolean aplica una de ocho transformaciones a la imagen las llamadas a este método solo tienen efecto cuando se muestra el siguiente archivo tenga en cuenta que el rectángulo de la imagen en sí no cambia para acomodar la nueva relación entre altura y ancho de una imagen transformada este método puede llamarse por separado en múltiples instancias de roimageplayer o roimagewidget identidad sin transformación (comportamiento predeterminado) rot90 rotación de 90 grados en sentido horario rot180 rotación de 180 grados rot270 rotación de 270 grados en sentido horario espejo transformación de espejo horizontal mirror rot90 rotación en espejo de 90 grados en sentido horario mirror rot180 rotación en espejo de 180 grados en sentido horario mirror rot270 rotación en espejo de 270 grados en sentido horario overlayimage(image filename as string, x as integer, y as integer) as boolean compone la imagen con el nombre de archivo especificado encima de la imagen principal de displayfile() utilice los enteros x e y para especificar su ubicación dentro del widget de imagen setrectangle(r as rorectangle) as boolean cambia el tamaño y la posición del rectángulo de la imagen utilizando el objeto rorectangle pasado getrectangle() as rorectangle devuelve un objeto rorectangle que tiene la misma ubicación y dimensiones que el objeto rorectangle utilizado para definir la ventana de imagen createtesthole(hole as rorectangle) as boolean crea un agujero en la imagen con la ubicación y dimensiones especificadas en la instancia de rorectangle pasada cualquier ventana de video ubicada directamente debajo de la imagen será visible a través de ella este método interrumpirá la reproducción de imágenes y debe utilizarse solo con fines de prueba settransitionduration(duration as integer) as boolean establece la cantidad de tiempo que tarda (en milisegundos) en producirse un efecto de transición especificado la duración predeterminada de la transición es de 1000 milisegundos displaybuffer(a as object, b as integer, c as integer) as boolean hide() as boolean oculta la imagen que se está mostrando actualmente mediante la instancia de roimagewidget show() as boolean muestra la imagen que se está mostrando actualmente mediante la instancia de roimagewidget imágenes multipantalla este objeto incluye métodos sobrecargados preloadfile() y displayfile() estos métodos reciben un objeto roassociativearray que almacena varias opciones que se pasarán deben utilizarse al mostrar imágenes en varias pantallas de una matriz, o al mostrar una parte de una imagen, aunque también pueden utilizarse en lugar de las llamadas al método original en todos los casos el siguiente código utiliza el método preloadfile() para una visualización multipantalla i=createobject("roimagewidget") a=createobject("roassociativearray") a\["filename"] = "test jpg" a\["mode"] = 1 a\["transition"] = 14 a\["multiscreenwidth"] = 3 a\["multiscreenheight"] = 2 a\["multiscreenx"] = 0 a\["multiscreeny"] = 0 i preloadfile(a) i displaypreload los valores de nombre de archivo , modo , y transición son los mismos que los documentados para los métodos displayfile() y preloadfile() anteriores los parámetros anchomultiventana y alturamultiventana especifican el ancho y la altura de la matriz multipantalla por ejemplo, 3x2 serían tres pantallas de ancho y dos pantallas de alto multiscreenx y multiscreeny especifican la posición de la pantalla actual dentro de esa matriz en el caso anterior, en promedio solo se dibuja 1/6 de la imagen en cada pantalla, aunque el modo de imagen sigue aplicándose, por lo que, dependiendo de la forma de la imagen, puede tener barras negras en las pantallas laterales por lo tanto, es relativamente sencillo que un widget de imagen muestre parte de una imagen según su posición en la matriz multipantalla los siguientes son valores predeterminados para los parámetros mode = 0 transition = 0 multiscreenwidth = 1 multiscreenheight = 1 multiscreenx = 0 multiscreeny = 0 este código utiliza displayfile() para mostrar una parte de una imagen i=createobject("roimagewidget") a=createobject("roassociativearray") a\["filename"] = "test jpg" a\["mode"] = 0 a\["multiscreenx"] = 600 a\["multiscreeny"] = 600 a\["multiscreenwidth"] = 400 a\["multiscreenheight"] = 400 i displayfile(a) esto muestra solo una parte de la imagen test jpg comenzando en las coordenadas sourcex , sourcey , y con un tamaño de ancho de origen por altura de origen el viewmode sigue respetándose como si estuviera mostrando el archivo completo