Quisiera me ayudara a crear un fondo personalizado y permanente a mi aplicación creada en Visual Foxpro; como ejemplo el logotipo o nombre de mi compañía. Esto para darle un toque personalizado a mi aplicación.
1 Respuesta
Respuesta de rastadj
1
1
rastadj, Derick Salazar, Coorporacion Imb-Pc Ciudad De Guatemala
Dependiendo de que version tengas de Visual Fox te permitirá porner gráficos bmp, jpg, jpeg, alugunas otras o todas. Tu quieres cambiar el fondo de tu aplicación osea de la ventana principal o form principal de Visual Fox, este objeto tiene el nombre de _Screen Y tiene propiedades como cualquier form (algunas o todas dependiendo de la version) Cualquier cambio que quieras al form principal deberás referirte al objeto _Screen. Por ejemplo _Screen.BackColor = Rgb(255,1,1) _screen.Picture = 'fondo.jpg' _Screen.Caption = "Mi Aplicacion" + cNombreUsuario etc, etc, etc.. Ahora bien si quieres Que cada usuario tenga su propio fondo deberás hacer un procedimiento que te permita guardar en una base de datos el path o ruta de donde se encuentra esa gráfica o archivo de fondo, esto para cada usuario. De tal forma que cuando inicie su sesión en tu aplicación por usuario vas a traer esa gráfica y le dices: _screen.picture = rutadefoto Saludos, Derick Salazar Guatemala
Excelente. Hice lo que me dijiste, pero cuando selecciono una imagen, me aparece duplicada, como en mosaico; ¿Qué debo hacer para que me aparezca centrada? De nuevo gracias
Si lo se... Puedes hacer 1000 cosas para que poder centrarla... Pero yo te aconsejaría que hicieras tu gráfica de 1024 x 768 para que te cubriera todo el fondo... No hay una opción como Autocenter o que se yo... Si, lo se, es una muy mala solución pero es la más practica... Como te quede mal en esta te mando este procedimiento para enmendar el error... ji ji ***************************** ***************************** DO decl #DEFINE LR_LOADFROMFILE 16 LOCAL lcBitmap lcBitmap = "C:\Picture.bmp" &&& Tu grafica la debes especificar aca = LoadAndShowBitmap (lcBitmap, LR_LOADFROMFILE, 251,100) PROCEDURE LoadAndShowBitmap (lcBitmap, lnLoadOptions, lnX,lnY) #DEFINE IMAGE_BITMAP 0 LOCAL hBitmap hBitmap = LoadImage (0, lcBitmap, IMAGE_BITMAP,; 0,0, lnLoadOptions) IF hBitmap <> 0 = ShowBitmap (hBitmap, lnX,lnY) = DeleteObject (hBitmap) ELSE = MessageB (lcBitmap + Chr(13) + Chr(13) +; "Check if this is a valid BMP file.",; 32, " Unable to load an image from file") ENDIF PROCEDURE ShowBitmap (hBitmap, lnX, lnY) #DEFINE AC_SRC_OVER 0 #DEFINE AC_SRC_ALPHA 1 #DEFINE AC_SRC_NO_ALPHA 2 #DEFINE SRCCOPY 13369376 LOCAL hWnd, hDC, hMemDC, lnWidth, lnHeight STORE 0 TO lnWidth, lnHeight = GetBitmapSize (hBitmap, @lnWidth, @lnHeight) hWnd = GetActiveWindow() hDC = GetWindowDC (hWnd) hMemDC = CreateCompatibleDC(hDC) = SelectObject (hMemDC, hBitmap) LOCAL lnAlphaBlend, lnResult,; lnBlendOp, lnBlendFlags, lnSrcConstAlpha, lnAlphaFormat lnBlendOp = AC_SRC_OVER && always lnBlendFlags = 0 && always lnSrcConstAlpha = 48 && intensity, up to 255 lnAlphaFormat = 0 && try AC_SRC_ALPHA on non-white background lnAlphaBlend = lnBlendOp +; BitLShift(lnBlendFlags, 8) +; BitLShift(lnSrcConstAlpha, 16) +; BitLShift(lnAlphaFormat, 24) lnResult = AlphaBlend (hDC, lnX,lnY, lnWidth,lnHeight,; hMemDC, 0,0, lnWidth,lnHeight,; lnAlphaBlend) IF lnResult = 0 ? "Error:", GetLastError() ENDIF = DeleteDC(hMemDC) = ReleaseDC (hWnd, hDc) RETURN .T. FUNCTION GetBitmapSize (hBitmap, lnWidth, lnHeight) #DEFINE BITMAP_STRU_SIZE 24 LOCAL lcBuffer lcBuffer = Repli(Chr(0), BITMAP_STRU_SIZE) IF GetObjectA(hBitmap, BITMAP_STRU_SIZE, @lcBuffer) <> 0 lnWidth = buf2dword (SUBSTR(lcBuffer, 5,4)) lnHeight = buf2dword (SUBSTR(lcBuffer, 9,4)) ENDIF FUNCTION buf2dword (lcBuffer) RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ; BitLShift(Asc(SUBSTR(lcBuffer, 2,1)), 8) +; BitLShift(Asc(SUBSTR(lcBuffer, 3,1)), 16) +; BitLShift(Asc(SUBSTR(lcBuffer, 4,1)), 24) PROCEDURE decl DECLARE INTEGER CreateCompatibleDC IN gdi32 INTEGER hdc DECLARE INTEGER DeleteDC IN gdi32 INTEGER hdc DECLARE INTEGER GetActiveWindow IN user32 DECLARE INTEGER GetWindowDC IN user32 INTEGER hwnd DECLARE INTEGER ReleaseDC IN user32 INTEGER hwnd, INTEGER dc DECLARE INTEGER DeleteObject IN gdi32 INTEGER hObject DECLARE INTEGER SelectObject IN gdi32 INTEGER hdc, INTEGER hObject DECLARE INTEGER LoadImage IN user32; INTEGER hinst, STRING lpszName, INTEGER uType,; INTEGER cxDesired, INTEGER cyDesired, INTEGER fuLoad DECLARE INTEGER GetObject IN gdi32 AS GetObjectA; INTEGER hgdiobj, INTEGER cbBuffer, STRING @lpvObject DECLARE INTEGER AlphaBlend IN Msimg32; INTEGER hDestDC, INTEGER x, INTEGER y,; INTEGER nWidth, INTEGER nHeight, INTEGER hSrcDC,; INTEGER xSrc, INTEGER ySrc, INTEGER nWidthSrc,; INTEGER nHeightSrc, INTEGER blendFunction DECLARE INTEGER GetLastError IN kernel32 ************************************************************ Espero te sirva... es como una marca de agua y se ve muy profesional... Hasta la próxima, Derick Salazar Guatemala.