IMAGEN ALEATORIA

Post Reply
User avatar
Jairo Barbosa
Posts: 188
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia
Contact:

IMAGEN ALEATORIA

Post by Jairo Barbosa »

Antonio, Daniel, y demás integrantes del foro:

Necesito presentar una imagen escogida aleatoriamente, alguien me puede explicar un arreglo de cómo podría hacerlo?

De antemano agradecido por la enseñanza

Jairo Barbosa
User avatar
RodolfoRBG
Posts: 253
Joined: Tue May 16, 2006 4:46 pm
Location: San Luis Potosi, SLP, Mexico
Contact:

Re: IMAGEN ALEATORIA

Post by RodolfoRBG »

Se me ocurre:

X:=Directory("*.BMP")
y:=nRandom(len(x)+1)+1
ImagenAleatoria:=X[Y,1]
RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: IMAGEN ALEATORIA

Post by Cgallegoa »

Jairo,

Te preparé hace dos días un ejemplo y he intentado enviártelo muchas veces a tu email pero rebota.

Tienes otra cuenta de email ?

Saludos,

Carlos Gallego
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
User avatar
Jairo Barbosa
Posts: 188
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia
Contact:

Re: IMAGEN ALEATORIA

Post by Jairo Barbosa »

Rodolfo Muy agradecido por tu sugerencia

Carlos Gracias de antemano mira mis correos hk3dqc@yahoo.es hk3dqc@gmail.con fundacion@genesisoft.co.cc

Dios les Bendiga
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: IMAGEN ALEATORIA

Post by Cgallegoa »

Hola Jairo,

Ya te envié el ejemplo a hk3dqc@gmail.com. Revisa tu correo.

Saludos,

Carlos Gallego
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: IMAGEN ALEATORIA

Post by cuatecatl82 »

Hola Jairo:

Ayer conteste a tu petición via correo y aqui tengo lo que me solicitaste:

De antemano pido disculpas por no contestar a tiempo tu correo.

Para cambiar la Imagen de Fondo haz click derecho en el escritorio para que salga el menú de selección, puedes avanzar, regresar o mostrar aleatoriamente una imagen de 5 que contiene el ejemplo, puedes poner las que quieras y necesites, solo haz el cambio de cuentas imagenes quieras mostrar en tu sistema y listo.

Image

Te dejo el ejemplo construido y el codigo fuente para quienes lo necesiten y si por si acaso con el tiempo no pueden bajar el ejemplo, las imagenes son en formato JPG, uso freeimage.dll para mostrarlas, puedes usar BMP y PNG, pero JPG es mejor por tamaño de cada imagen, las tengo guardadas en la carpeta "FONDOS", puedes poner más si gustas.

Code: Select all

#Include "FIVEWIN.CH"

STATIC oWnd,nBrush

//-----------------------------------------------------------------------------------------------------------------//
FUNCTION Main()

LOCAL oIco,oBru

nBrush:= Random(5)     // 5 Imagenes para este ejemplo
 
  DEFINE Icon   oIco RESOURCE "01"
  DEFINE Brush  oBru FILE ".\FONDOS\FONDO"+ALLTRIM(STRZERO(nBrush,2))+ ".JPG"
  DEFINE Window oWnd TITLE    "La Cultura Maya de Chiapas México." ICON oIco BRUSH oBru
ACTIVATE Window oWnd MAXIMIZED ON RIGHT CLICK ShowPopup(nRow, nCol)

RETURN nil

//-----------------------------------------------------------------------------------------------------------------//
STATIC FUNCTION ShowPopup( nRow, nCol )

LOCAL oPop

      MENU oPop POPUP
           MENUITEM "Avanzar Imágen del Escritorio"       RESOURCE "BMP1" ACTION CambiaFondo(">")
           SEPARATOR
           MENUITEM "Regresar Imágen del Escritorio"      RESOURCE "BMP2" ACTION CambiaFondo("<")
           SEPARATOR
           MENUITEM "Imágen Aleatoria del Escritorio"     RESOURCE "BMP3" ACTION CambiaFondo("*")
           SEPARATOR
           MENUITEM "Terminar Paseo por la Cultura Maya"  RESOURCE "BMP4" ACTION oWnd:END()
      ENDMENU

      ACTIVATE POPUP oPop AT nRow, nCol OF oWnd

RETURN nil

//-----------------------------------------------------------------------------------------------------------------//
STATIC FUNCTION CambiaFondo(cTipo)
   
LOCAL oBru
          
          IF cTipo == ">"             
             nBrush:= IF( nBrush > 04, 01, ++nBrush )
             oWnd:oBrush:RELEASE()
             oWnd:REFRESH()
      ELSEIF cTipo == "<"             
             nBrush:= IF( nBrush < 02, 05, --nBrush )
             oWnd:oBrush:RELEASE()
             oWnd:REFRESH()
      ELSEIF cTipo == "*"             
             nBrush:= Random(5)     
             oWnd:oBrush:RELEASE()
             oWnd:REFRESH()             
       ENDIF      
        
    MSGInfo("Cambiando Imagen de Fondo por:"+CRLF+;
            ".\FONDOS\FONDO"+ALLTRIM(STRZERO(nBrush,2))+ ".JPG","Imagen de Escritorio")
        
   DEFINE BRUSH oBrush FILE ".\FONDOS\FONDO"+ALLTRIM(STRZERO(nBrush,2))+ ".JPG"
   SET BRUSH OF oWnd TO oBrush 
   SysRefresh()
   oWnd:REFRESH()
   SysRefresh()

RETURN nil

//-----------------------------------------------------------------------------------------------------------------//
STATIC FUNCTION Random(nLimite)
  
STATIC nGuarda:= 1

LOCAL I
LOCAL nResult


  IF VALTYPE( nLimite ) # [N]
    nLimite:= 100
  ENDIF

  I:= SECONDS()

  WHILE nLimite > I
    I:= I * 100 +SECONDS()
  ENDDO

  nGuarda:= (nGuarda +I) / (nResult:= nGuarda * I % nLimite +1)
  nResult:= INT( nResult )
  
RETURN nResult
 
Aqui te dejo el ejemplo construido:

http://www.megaupload.com/?d=E0DTZTZV

Ojala sea de utilidad y sea lo que necesites... si algo más necesitas no dudes en preguntarme.. Saludos..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
Jairo Barbosa
Posts: 188
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia
Contact:

Re: IMAGEN ALEATORIA

Post by Jairo Barbosa »

Víctor Gracias por tu aporte

Te había enviado la respuesta a tu correo, un genial "sample" para entenderlo

Cordialmente

Jairo Barbosa
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: IMAGEN ALEATORIA

Post by cuatecatl82 »

Jairo:

Me alegro que te haya servido mi pequeño ejemplo, acabo de recibir por correo tu msg. estamos para servirte...

Saludos.. :wink: :lol: :lol:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: IMAGEN ALEATORIA

Post by cuatecatl82 »

Saludos:

Aquí esta el aporte para poder aplicarlo en ambientes MDI, Contribución de mi colega Jairo Barbosa, de Cali Colombia.

Code: Select all

// FWH Class TOutLook2003
// Ejemplo elaborado y modificado por Jairo Barbosa
// Con las asesoráis de Carlos Gallego
// Carlitos gracias por tus consejos
 

#include "FiveWin.ch"
#include "Splitter.ch"
#include "Outlook.ch"
#include "image.ch"

STATIC lExit := .F.
 
//----------------------------------------------------------------------------//

FUNCTION Main()

 LOCAL oWnd, oStatusBar, oSplit  
 LOCAL oFont, oExBar, oPanel1, oPanel2 
 LOCAL bClick := {|o| MSGInfo("En construccion")} 
 
 
*------------------------------------------------------------------------------*
  nResoAncho := GetSysMetrics(0)//800
  nResoAlto  := GetSysMetrics(1)//600

*------------------------------------------------------------------------------*
   cRandom:= Random()

   DEFINE WINDOW oWnd TITLE "FWH new Class TOutLook2003" PIXEL MDI  ;
   MENU BuildMenu()  COLORS RGB(0,0,0),RGB(255,255,255)
  
   @ 1,1 SAY oSay VAR cRandom OF oWnd:oWndClient SIZE 100,15;
             PIXEL UPDATE TRANSPARENT

   @ 1,1 image oBmp OF oWnd:oWndClient size nResoAncho, nResoAlto ;
      FILE ".\" + ALLTRIM(STRZERO(cRandom,2))+".JPG" PIXEL NOBORDER adjust

   DEFINE OUTLOOK2003 oOutLook2003 OF oWnd ;
   PROMPTS "Kardex" BITMAPS "C:\FWH\bitmaps\mail.bmp" 
     
   oWnd:oLeft = nil // Because the splitter is going to control the resize   

   @ 5, 5 EXPLORERBAR oExBar OF oOutLook2003:aDialogs[ 1 ] ;
      SIZE oOutLook2003:aDialogs[1]:nWidth, oOutLook2003:aDialogs[1]:nHeight 

   oPanel1 = oExBar:AddPanel( "One", "C:\FWH\bitmaps\32x32\people.bmp" )
   oPanel1:lSpecial = .T.
   oPanel1:AddLink( "Entradas",  bClick,;
                    "C:\FWH\bitmaps\16x16\additem.bmp" );
  
   oPanel1:AddLink( "Consulta de Saldos",  bClick,;
                   "C:\FWH\bitmaps\16x16\copy.bmp" )
   oPanel1:AddLink( "Tercer item", bClick, "C:\FWH\bitmaps\16x16\copy.bmp" )

   oPanel2 = oExBar:AddPanel( "Dos", "C:\FWH\bitmaps\32x32\people.bmp" )
   oPanel2:lSpecial = .T.
   oPanel2:AddLink( "Hacer copia de seguridad", bClick,;
                    "C:\FWH\bitmaps\16x16\additem.bmp" )
   oPanel2:AddLink( "Recuperar copia", bClick,"C:\FWH\bitmaps\16x16\copy.bmp")
   oPanel2:AddLink( "Idexar Bases", bClick, "C:\FWH\bitmaps\16x16\copy.bmp" )

   oPanel3 = oExBar:AddPanel( "Tres", "C:\FWH\bitmaps\32x32\people.bmp" )
   oPanel3:lSpecial = .T.
   oPanel3:AddLink( "Cambiar fondo", {||CambioFondo()},;
                     "C:\FWH\bitmaps\16x16\copy.bmp" )
 
   DEFINE STATUSBAR oStatusBar PROMPT "  FWH Class TOutLook2003" OF oWnd

   SetParent( oOutLook2003:hWnd, oWnd:hWnd )
   
   oWnd:oClient = nil
   
   @ 1, 192 SPLITTER oSplit ;
      VERTICAL _3DLOOK ;
      PREVIOUS CONTROLS oOutLook2003 ; 
      HINDS CONTROLS oWnd:oWndClient ;
      SIZE 4, oWnd:nHeight - 170 PIXEL ;
      OF oWnd

   SetParent( oSplit:hWnd, oWnd:hWnd )

   ACTIVATE WINDOW oWnd maximized;
   ON INIT ( cRandom := STRZERO(hb_RandomInt(1,14),4),;
      oBmp:ReLoad( , "JPG"+cRandom+".JPG" ) , oBmp:Refresh(),;
      oSay:VarPut( "JPG:  JPG"+cRandom+".JPG" ) , oSay:Refresh() );
      ON RESIZE ( oSplit:Adjust(),;
                  WndLeft( oWnd:oWndClient:hWnd, oSplit:nRight + 1 ),;
                  WndWidth( oWnd:oWndClient:hWnd,;
                 oWnd:nWidth - oOutLook2003:nWidth - 23)) VALID lExit := .T.

   RETURN nil
*----------------------------------------------------------------------------//
STATIC FUNCTION CambioFondo()

 (cRandom := STRZERO(hb_RandomInt(1,14),4) ,;
  oBmp:ReLoad( , "JPG"+cRandom+".JPG" ) , oBmp:Refresh(), ;
  oSay:VarPut( "JPG:  JPG"+cRandom+".JPG" ) , oSay:Refresh())

   RETURN nil 
   
//-------------------------------------------------------------------------- 

FUNCTION BuildMenu()

   LOCAL oMenu
   
   MENU oMenu
      MENUITEM "&One"
      MENUITEM "&Two"
      MENUITEM "&Three"
   ENDMENU
   
RETURN oMenu   

*-----------------------------------------------------------------------------*
#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

BOOL SysRefresh( VOID );

HB_FUNC( NOGPF )
{
   __try
   {
      hb_retl( SysRefresh() );
   }
   __except ( ( hb_retl( TRUE ), TRUE ) )
   {} 
}

#pragma ENDDUMP 
*----------------------------Fin del codigo-----------------------------------*
Binario con Imagenes de Demostración:

http://www.megaupload.com/?d=P75R94NY
Image

Saludos...
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Post Reply