Bonjour, je voudrais faire du surlignage dans une bitmap. Je m'explique : J'ai une bitmap qui représente du texte, et je veux, à la manière d'un marqueur fluo, surligner des lignes du texte, en semi transparence. Comment faire ?
Je pense qu'il faut utilmiser AlphaBlend. J'arrvie a rendre ma bitmap semi transparente (ce qui n'est pas le but), mais je n'arrive pas a faire un rectangle de couleur semi transparent dans ma bitmap.
Mon code : (que j'ai plus attrapé sur le net à la base, au quelle j'ai essayé de bidouillé de la transparence)
void CArchiv2View::DrawBitmap( CDC *pDC, HBITMAP hBitmap, HPALETTE hPal, int xDest, int yDest )
{
// Get logical coordinates
BITMAP bm;
::GetObject( hBitmap, sizeof( bm ), &bm );
CPoint size( bm.bmWidth, bm.bmHeight );
pDC->DPtoLP(&size);
CPoint org(0,0);
pDC->DPtoLP(&org);
// Mon DC mémoire
// Create a memory DC compatible with the destination DC
CDC memDC;
memDC.CreateCompatibleDC( pDC );
memDC.SetMapMode( pDC->GetMapMode() );
//memDC.SelectObject( &bitmap );
HBITMAP hBmOld = (HBITMAP)::SelectObject( memDC.m_hDC, hBitmap );
// Je me suis dis qu'il fallais que je créé un DC dans le quel je //dessinais ma ligne
CDC LigneDC;
LigneDC.CreateCompatibleDC( pDC );
LigneDC.SetMapMode( pDC->GetMapMode() );
CRect rc=CRect(200, 200, 700, 220);
CBrush brush(RGB(255, 255, 0));
LigneDC.FillRect(rc, &brush);
// les propriétes de transparence
BLENDFUNCTION blendF;
blendF.BlendOp = AC_SRC_OVER;
blendF.BlendFlags = 0;
blendF.SourceConstantAlpha = 100;
//blendF.AlphaFormat = AC_SRC_ALPHA;
blendF.AlphaFormat = 0;
// je copie en tranparence le DC contenant la ligne dans le memDC (qui contient deja ma bitmap)
memDC.AlphaBlend(0, 0, 1000, 1000, &LigneDC, 0, 0, 1000, 1000, blendF);
// Select and realize the palette
if( hPal && pDC->GetDeviceCaps(RASTERCAPS) & RC_PALETTE)
{
SelectPalette( pDC->GetSafeHdc(), hPal, FALSE );
pDC->RealizePalette();
}
// et je copie le memDC dans mon PaintDC
pDC->BitBlt(xDest, yDest, size.x, size.y, &memDC, org.x, org.y, SRCCOPY);
::SelectObject( memDC.m_hDC, hBmOld );
}
Que est ce qui cloche ?