Estoy usando Qt 4.7 QPainter para dibujar algunos polígonos, etc. en un widget. Espero alterar el sistema de coordenadas para que (0,0) esté en el centro de mi artilugio, y el eje x/y se comporte de una manera "cartesiana" estándar (es decir, y aumente yendo "arriba" y disminuya ") abajo"). En otras palabras, quiero que las coordenadas sean "matemáticas", como los "gráficos de computadora", como si supieras lo que quiero decir. :-)Usar ventana/ventana gráfica para voltear el eje y de QPainter
Estoy tratando de hacer esto usando setViewport() y setWindow() en lugar de hacer los cálculos yo mismo, ya que sería bueno poder simplemente llamar a los métodos de dibujo directamente con mis coordenadas.
Esto es lo que tengo hasta ahora:
// Setup coordinates
double screenWidth = width();
double screenHeight = height();
double windowWidth = 100.0;
double windowHeight = (screenHeight/screenWidth) * windowWidth;
painter.setViewport(0, 0, screenWidth, screenHeight);
painter.setWindow(-(windowWidth/2.0), -(windowHeight/2.0), windowWidth, windowHeight);
// Draw stuff
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::blue);
painter.drawRect(-10, -10, 20, 20);
Ahora bien, esto funciona bien, ya que dibuja un cuadrado azul agradable en el centro de la pantalla. El problema es que tengo que decir que la esquina superior izquierda es (-10, -10). Me gustaría poder hacerlo (-10, 10), ya que eso es lo que sería en las coordenadas cartesianas.
Intenté jugar con setWindow/setViewport para obtener este "salto del eje y", pero fue en vano. Esto parece una cosa realmente fácil/básica, pero después de recorrer los documentos de Qt y la web, ¡no puedo entenderlo!
Gracias,
Chris
Correcto, sin embargo, es necesario mencionar que los textos también se voltean. ¡Eso no es lo más deseado! – bkausbk
Gracias por la actualización;) – Stormenet