Pregunta

Me gustaría para determinar si un rect dentro de una ventana es completamente visible.

he encontrado RectVisible, pero que la función determina si alguna parte de la rect es visible, quiero saber si todo el rect es visible.

¿Hay alguna función para esto?

¿Fue útil?

Solución

En primer lugar obtener la región de recorte del sistema (la región visible de una ventana) en una región utilizando GetRandomRgn . Lea más sobre la 'región del sistema' aquí . Entonces, compensar esa región, ya que es en coordenadas de pantalla (artículo he vinculado tiene un ejemplo). Después de eso, crear una región de su rectángulo con CreateRectRgn y combinar las partes de su 'región rectángulo' con aquellos que no son parte de la 'región del sistema': que está llamando CombineRgn pasando la región rectángulo como la primera región, y la región del sistema como la segunda región, y RGN_DIFF como el fnCombineMode. Si el resultado es NULLREGION entonces su rectángulo es completamente visible -. No haya sido total o parcialmente cubierto por cualquier ventana (nivel superior o no), o no lo es total o parcialmente fuera de la pantalla

Con todo, hay una probabilidad de que se está acercando a su problema al revés. Si has contado lo que ha estado tratando de lograr que alguien probablemente podría sugerir un enfoque más simple.

Otros consejos

PtVisible en cada esquina del rectángulo.

  

La función PtVisible determina   si el punto especificado está dentro de   la región de recorte de un dispositivo   contexto.

Se puede hacer una comparación sencilla usando las coordenadas de la ventana y el rectángulo.

Comprobar ordenada izquierda del rectángulo está a la derecha del borde izquierdo de la ventana; la ordenada derecha está a la izquierda del borde derecho de la ventana; y similar para la parte superior e inferior?

El único arrugas podría ser si está utilizando ambas coordenadas lógicas y físicas, en cuyo caso se tendrá que realizar una transformación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top