Estoy liado con un tema que me anda consumiendo XD
Ya estuve buscando por todas las partes pero poco encontré =(.
Estoy intentando hacer un scrollbar.
Me estoy dando mil vueltas para conseguirlo.
En Internet hay millones de resultados para java, c# ,html... pero para C++ nada de nada, y lo comprendo ya que c++ no es una librería gráfica. XD
Mi intención es hacer un scrollbar para un menú de un juego en SFML pero no se como hacer.
Lo que he logrado hasta ahora es conseguir saber el tamaño de la barra de scroll según el tamaño del contenido de la imagen.
Dejo una imagen para que lo vean mejor.
No se como lograr que al desplazar la barra hacia abajo mostre el restante del contenido.
Tengo un código echo en miniwin con la ventana y la barra ya con su ancho pero no logro hacer el resto =((
Hojala me puedan ayudar.
Dejo el código de miniwin:
Código
Si quieren probar el código miniwin se puede bajar de aquí: http://miniwin.readthedocs.org/en/latest/
#include "miniwin.h" #include <iostream> #include <sstream> #include <cmath> using namespace miniwin; int main(){ float ancho = 800; float alto = 600; float x = 0; //parte de arriba de la pantalla float y = 0; //parte izquierda de la pantalla float izq = ancho-20; float arr = y; float aba = y+ancho; float der = izq+20; float borde_izquierdo = 0; float borde_derecho = ancho; float retraso = 1000; float velocidad = 5; float total = 2000; //contenido float visible = alto; //area visible del contenido(ventana) float scrollbar = alto; //digamos que es el rail donde puede desplazar la barra este es el alto de la pantalla float anchoBarra = 0; //tamaño de la barra segun el tamaño contenido std::stringstream ss; //necesario para imprimir ya que miniwin no permite abrir consola. int t; vredimensiona(ancho, alto); while ( true ) { //LOGICA DE JUEGO anchoBarra = ( visible / total ) * scrollbar; //ancho de la barra. ss << anchoBarra; t = tecla(); if(t==ARRIBA){ //Desplazar hacia arriba } if(t==ABAJO){ //Desplazar hacia abajo } //PINTAMOS CAMBIOS color(VERDE); rectangulo_lleno( x, y, x+800-20, total); //contenido color(ROJO); rectangulo_lleno( izq, arr, der, anchoBarra); //barra texto(0,0,ss.str()); refresca(); borra(); espera(retraso); }//FIN GAMELOOP return 0; }
Es un proyecto de codeblocks. Aquí tiene una explicación de las funciones de miniwin:
http://miniwin.readthedocs.org/en/latest/
Lo hago en miniwin por que es sumamente fácil en esta librería, pero tengo pensado llevar eso a SFML. Si para vosotros es mejor SFML seria genial.
No os pido que me lo hagan solo si me pueden echar un cable o alguna pagina que pueda tirar esa duda.
¡Gracias desde ya! Un saludo.