PictureBox

Iniciado por pikoc, 14 Julio 2015, 12:08 PM

0 Miembros y 1 Visitante están viendo este tema.

pikoc

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...

x64core

Cita de: 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...
¿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.

pikoc

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! :)

x64core

#3
Cita de: 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! :)

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.


#include <OleCtl.h>

       CoInitialize(0);

       HRESULT hResult;
       IPicture* Img;
       SHORT ImgType;

       hResult = OleLoadPicturePath(
           L"RUTA_DE_LA_IMAGEN",
           NULL, 0, 0,
           &IID_IPicture,
           &Img
           );

       if (hResult == S_OK)
       {
           OLE_HANDLE OleImgHandle;
           hResult = Img->lpVtbl->get_Handle(Img, &OleImgHandle);
           if (hResult == S_OK)
           {
               HBITMAP hPicRet = (HBITMAP)CopyImage(
                   (HANDLE)OleImgHandle, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG);

               if (hPicRet)
               {
                   SendDlgItemMessage(
                       hwndDlg,                // HWND de la ventana padre del control
                       IDC_PB1,                // Identificador del control
                       STM_SETIMAGE,
                       IMAGE_BITMAP,
                       (LPARAM)hPicRet);

               }
           }

           Img->lpVtbl->Release(Img);
       }