Salut
j'ai une methode mais pour afficher une Bitmap a partir du fichier peut etre tu peu la faire pour une base de donées
je vais te donne un example et je croit qu'il va être utils
cree une variable mombre ici m_bm de type CBitmap
et une variable m_chemin de type CString
et met un bouton dans la dialog qui va nous permetre de selectionné le fichier
et attache cette procedure a l'événement ON_CLICK
void CBitmapDlg::OnBmpOpen()
{
// TODO: Add your command handler code here
static char BASED_CODE szFilter[] ="Fichier Bitmap (*.bmp)|*.bmp||";
//Crée une boite de dialogue
CFileDialog m_DialFile(TRUE,".bmp",m_Chemin,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);
//On affiche la boite de dialoque "Ouvrire"
if(m_DialFile.DoModal()==IDOK)
{
//Récupére le nom de l'image
m_Chemin=m_DialFile.GetPathName();
//CHARGER L 'IMAGE SELECTIONNEE
HBITMAP hBitmap =(HBITMAP)::LoadImage(AfxGetInstanceHandle(),m_Chemin,IMAGE_BITMAP,
0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
//Si le handel est valide
if(hBitmap)
{
//Suprime le bitmap courant
if(m_Bm.DeleteObject())
//SI IL EXISTE UNE IMAGE LA DETACHER
m_Bm.Detach();
m_Bm.Attach(hBitmap);
};
Invalidate();
}
}
et crée une autre procédure qui affiche le bitmap
void CBitmapDlg::AfficheBmp(CDC *pdc)
{
BITMAP bm;
m_Bm.GetBitmap(&bm); //On récupère l'image chargée
CDC mdc;
mdc.CreateCompatibleDC(pdc);
//Sélectionne le bitmap dans un DC compatible
CBitmap * lOldBitmap = (CBitmap*) mdc.SelectObject(m_Bm);
// Calcule des coordonées
CRect lRect;
GetClientRect(lRect);
lRect.NormalizeRect();
//Copie le bitmap dans la fenêtre et le redimensionne
pdc->SetStretchBltMode(COLORONCOLOR); //Pour avoir une meilleur qualite
pdc->StretchBlt(10,10,lRect.Width()-20,lRect.Height()-20,&mdc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}
puis dans la fonction OnPaint tu fait appelle a la fonction AfficheBmp
void CBitmapDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
if(m_Chemin!="")
{
CPaintDC dc(this);
AfficheBmp(&dc);
};
CDialog::OnPaint();
}
}
