IMAGEN ALEATORIA

IMAGEN ALEATORIA

Postby Jairo Barbosa » Wed Jul 06, 2011 3:00 pm

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
Jairo Barbosa
 
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia

Re: IMAGEN ALEATORIA

Postby RodolfoRBG » Wed Jul 06, 2011 3:07 pm

Se me ocurre:

X:=Directory("*.BMP")
y:=nRandom(len(x)+1)+1
ImagenAleatoria:=X[Y,1]
RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
User avatar
RodolfoRBG
 
Posts: 257
Joined: Tue May 16, 2006 4:46 pm
Location: San Luis Potosi, SLP, Mexico

Re: IMAGEN ALEATORIA

Postby Cgallegoa » Wed Jul 06, 2011 3:26 pm

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-24.07, xHarbour 1.3.1 Build 20240624, Borland C++7.70, PellesC ***
Cgallegoa
 
Posts: 492
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Re: IMAGEN ALEATORIA

Postby Jairo Barbosa » Wed Jul 06, 2011 4:06 pm

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
User avatar
Jairo Barbosa
 
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia

Re: IMAGEN ALEATORIA

Postby Cgallegoa » Thu Jul 07, 2011 3:16 pm

Hola Jairo,

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

Saludos,

Carlos Gallego
Saludos,

Carlos Gallego

*** FWH-24.07, xHarbour 1.3.1 Build 20240624, Borland C++7.70, PellesC ***
Cgallegoa
 
Posts: 492
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Re: IMAGEN ALEATORIA

Postby cuatecatl82 » Thu Jul 07, 2011 3:54 pm

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  Expand view

#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
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: IMAGEN ALEATORIA

Postby Jairo Barbosa » Sun Jul 10, 2011 8:07 pm

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
Jairo Barbosa
 
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia

Re: IMAGEN ALEATORIA

Postby cuatecatl82 » Mon Jul 11, 2011 6:46 pm

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: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: IMAGEN ALEATORIA

Postby cuatecatl82 » Fri Oct 21, 2011 3:25 am

Saludos:

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

Code: Select all  Expand view

// 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
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 100 guests