Bonjour,
Je travaille actuellement sur la realisation d'un filtre Directshow utilisant GDI+. j'arrive, grace aux classes de GDI+ a ecrire sur la video lorsque je la lis dans une application externe (codee par moi-meme, qui crée le graph DirectShow et connecte les filtres). Mon probleme est que lorsque j'insere mon filtre dans un graph manuellement, mon texte n'apparait pas sur la video, qui elle se joue normalement.
Quelqu'un pourrait-il m'aider ?
Je mets ici une portion de mon code si jamais vous avez des remarques :
HBITMAP lDibSection = CreateDIBSection(NULL, (BITMAPINFO*) &pVI->bmiHeader,
DIB_RGB_COLORS, &lpDibBits, NULL, 0);
HDC lDC;
lDC = CreateCompatibleDC(NULL);
m_OldObject = SelectObject( lDC, lDibSection );
BYTE *pBuffer;
pSample->GetPointer( pBuffer );
RGBQUAD * pBuffer2 = (RGBQUAD*) pBuffer;
memcpy( lpDibBits, pBuffer, lWidth * lHeight * 4 );
WCHAR string[] = L"Hello World";
long lfHeight = 12 * LOGPIXELSY / 72 + 4;
Graphics gr(lDC);
// Preparing Font //
PointF pointF(0, lHeight - lfHeight);
FontFamily fontFamily(L"Arial");
Font font(&fontFamily, 12, FontStyleItalic, UnitPoint);
SolidBrush fontColor(Color(255, 255, 255, 255));
// Preparing rectangle //
RectF rectF(0, lHeight - lfHeight, lWidth, lfHeight);
Pen pen(Color(0, 0, 0, 0));
SolidBrush rectBackground(Color(128, 255, 0, 0));
gr.FillRectangle(&rectBackground, rectF);
// Draw Text on Background Rectangle //
gr.DrawRectangle(&pen, rectF);
gr.DrawString(string, -1, &font, pointF, NULL, &fontColor);
gr.get
gr.ReleaseHDC(lDC);
// Copy our modified bitmap into the original sample buffer
memcpy( pBuffer, lpDibBits, lWidth * lHeight * 4 );
DeleteDC(lDC);
DeleteObject(lDibSection);
Je précise donc que, utilise dans une appli, ce filtre affiche un bandeau rouge au bas de l'image, dans lequel on peut lire "Hello World". Malheureusement, en dehors, il ne fait rien, ce qui est dommage car j'aimerais bien realiser de petits effets sympa