Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Poder: 2
navbuoy Va por buen camino
Scroll en Stardust para el tema del Terreno Colonias

Bueno, esto es una chorradita pero os lo comparto por si os veis en la situacion:

Resulta que para el tema de colonias de Stardust tengo un terreno de mas dimension que la propia pantalla, asi que hice una funcion para controlar el deltax y deltay del scroll de pantalla y la forma en que lo hice para que lo haga cuando esta en las zonas "Hot" (extremos del TImage donde pinta el terreno) es asi:

en el Evento OnMouseDown de ese TImage donde pinto el terreno (que es la pantalla principal de esa parte de lo de las Colonias) pongo esto para el scroll con el boton derecho del raton:

Código:
 if (Button == mbRight)
  {
	 // Obtener dimensiones del formulario

	int formHeight = this->ClientHeight;
	int formWidth = this->ClientWidth;

	// Definir el área del borde (por ejemplo, 30 píxeles desde cada borde)

	int borderThreshold = 30;

	// Verificar si el mouse está en la parte superior

	if (Y <= borderThreshold) {
		Scroll2(0, -20);
	}

	// Verificar si el mouse está en la parte inferior

	else if (Y >= formHeight - borderThreshold) {
		Scroll2(0, 20);
	}

	// Verificar si el mouse está en la parte izquierda

	else if (X <= borderThreshold) {
		Scroll2(-20, 0);
	}

	// Verificar si el mouse está en la parte derecha

	else if (X >= formWidth - borderThreshold) {
		Scroll2(20, 0);
	}
  }

de esta forma si situamos el Ratón en uno de los extremos de la pantalla del TImage, y cliqueamos boton derecho, hace el scroll, lo cual es mas comodo que darle a los 4 botones de UP DOWN LEFT y RIGHT que tenia puestos.

y aqui la funcion SCROLL2 (Tened en cuenta que es cosa propia de Stardust, tendriais que adaptarla a vuestro sistema o app eh?)

TABLERO = el TImage donde pinta todo el terreno, construcciones etc... Image3 es digamos un buffer intermedio donde pinto primero el terreno antes de hacer el volcado a TABLERO con todo

Código:
void Scroll2(int deltaX, int deltaY) {
	
     // Actualiza el desplazamiento
	offsetX += deltaX;
	offsetY += deltaY;
	
     // Limita el desplazamiento para no salir de la imagen
	if (offsetX < 0) offsetX = 0;
	if (offsetY < 0) offsetY = 0;
	
     // Asegúrate de no salir de los límites de la imagen
	if (offsetX > Form7->Image3->Picture->Width - Form7->TABLERO->Width)
		offsetX = Form7->Image3->Picture->Width - Form7->TABLERO->Width;
	if (offsetY > Form7->Image3->Picture->Height - Form7->TABLERO->Height)
		offsetY = Form7->Image3->Picture->Height - Form7->TABLERO->Height;
	
      // Redibuja la imagen en el TImage (esto seria para limpiar el TABLERO pero como copio todo encima me lo ahorro)
	//Form7->TABLERO->Canvas->Brush->Color = clWhite; // Fondo blanco (o el color que desees)
	//Form7->TABLERO->Canvas->FillRect(Form7->TABLERO->ClientRect); // Limpia el lienzo


       /// Dibujamos actualizamos la imagen conforme al desplazamiento en que se encuentre el Scroll
 
      // Define el rectángulo de origen
	TRect rectSource(offsetX, offsetY, offsetX + Form7->TABLERO->Width, offsetY + Form7->TABLERO->Height);
	
     // Asegúrate de que el rectángulo de origen no exceda los límites de la imagen
	if (rectSource.Right > Form7->Image3->Picture->Width) rectSource.Right = Form7->Image3->Picture->Width;
	if (rectSource.Bottom > Form7->Image3->Picture->Height) rectSource.Bottom = Form7->Image3->Picture->Height;
	
     // Dibuja la parte visible de la imagen en TABLERO
	Form7->TABLERO->Canvas->CopyRect(Form7->TABLERO->ClientRect, Form7->Image3->Canvas, rectSource);
	
    // Por ultimo Dibujamos la Colonia (construcciones en ella)

    Dibuja_Colonia();

}

Última edición por navbuoy fecha: 20-10-2024 a las 01:26:16.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Trasteando con UDP Packets (Server y Cliente) (para Stardust) navbuoy C++ Builder 0 05-10-2024 16:18:17
Codigo PHP para caja de control de Servidor/Jugadores de Stardust navbuoy PHP 0 05-10-2024 14:57:24
Un buen tema para debatir (mas no para convencer) soyeduardo La Taberna 4 30-12-2021 03:54:10
Catalogo de Colonias mRoman Varios 10 22-03-2011 19:10:00
Linux va ganando terreno como SO para internet DarkByte Noticias 1 20-11-2003 18:08:15


La franja horaria es GMT +2. Ahora son las 11:50:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi