Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: pikoc en 14 Julio 2015, 12:08 pm



Título: PictureBox
Publicado por: pikoc en 14 Julio 2015, 12:08 pm
Hola:
Necesito ayuda para cargar una imágen en un picturebox, a mi antojo,
quiero hacerlo con un switch (i) en el que si i=0, cargue una fotografía y si i=1; cargue otra.
utilizando Visual Studio 2010.
Gracias por adelantado...


Título: Re: PictureBox
Publicado por: x64core en 14 Julio 2015, 16:41 pm
Hola:
Necesito ayuda para cargar una imágen en un picturebox, a mi antojo,
quiero hacerlo con un switch (i) en el que si i=0, cargue una fotografía y si i=1; cargue otra.
utilizando Visual Studio 2010.
Gracias por adelantado...
¿Qué tipo de imagen (Bitmap, jpeg, etc)?
¿Cómo creas el picturebox?
¿Para qué tipo de tareas necesitas mostrar la imagen + el tipo (Por ejemplo, se debe mostrará de forma permanente, se cargará de forma dinamica, necesitará ser redibujada, etc ) ?

Hay varias maneras de cargar y mostrar una imagen.


Título: Re: PictureBox
Publicado por: pikoc en 14 Julio 2015, 17:35 pm
A ver,
La imagen es un JPG.
El picturebox lo he creado en modo diseño.
y quiero que se cargue de forma dinámica.
No entiendo lo que quieres decir con tipo de tareas...
Y MUCHAS GRACIAS POR CONTESTAR! :)


Título: Re: PictureBox
Publicado por: x64core en 15 Julio 2015, 01:02 am
A ver,
La imagen es un JPG.
El picturebox lo he creado en modo diseño.
y quiero que se cargue de forma dinámica.
No entiendo lo que quieres decir con tipo de tareas...
Y MUCHAS GRACIAS POR CONTESTAR! :)

Una manera facil usando COM: OleLoadPicturePath, uso CopyImage para crear una copia de la imagen en memoria asi que debe ser liberada con DeleteObject a menos que quieras escribir directamente al objeto con Bitblt.

Código
  1. #include <OleCtl.h>
  2.  
  3.        CoInitialize(0);
  4.  
  5.        HRESULT hResult;
  6.        IPicture* Img;
  7.        SHORT ImgType;
  8.  
  9.        hResult = OleLoadPicturePath(
  10.            L"RUTA_DE_LA_IMAGEN",
  11.            NULL, 0, 0,
  12.            &IID_IPicture,
  13.            &Img
  14.            );
  15.  
  16.        if (hResult == S_OK)
  17.        {
  18.            OLE_HANDLE OleImgHandle;
  19.            hResult = Img->lpVtbl->get_Handle(Img, &OleImgHandle);
  20.            if (hResult == S_OK)
  21.            {
  22.                HBITMAP hPicRet = (HBITMAP)CopyImage(
  23.                    (HANDLE)OleImgHandle, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG);
  24.  
  25.                if (hPicRet)
  26.                {
  27.                    SendDlgItemMessage(
  28.                        hwndDlg,                // HWND de la ventana padre del control
  29.                        IDC_PB1,                // Identificador del control
  30.                        STM_SETIMAGE,
  31.                        IMAGE_BITMAP,
  32.                        (LPARAM)hPicRet);
  33.  
  34.                }
  35.            }
  36.  
  37.            Img->lpVtbl->Release(Img);
  38.        }
  39.