I am creating the video player in that i need to render the drawings (Ex: line, circle, rectangle etc.,) dynamically. So i am using GDI+ to draw the shapes and to render the drawings IVMRMixerBitmap9::SetAlphaBitmap(&VMR9AlphaBitmap) function is used to render the drawings in the vmr9 renderer. The VMR9AlphaBitmap structure containing all the information of the image.
Here is an example to render the line to the vmr9 renderer.
EX:
IVMRMixerBitmap9 pBmp;
VMR9AlphaBitmap bmpInfo;
Pen pen(Color(128,255,0,0),2.0);
RECT rt;
GetClientRect(hwndPanel,&rt);
Bitmap bmp(rt.right,rt.bottom,PixelFormat32bppARGB);
Graphics g(&bmp);
pen.SetEndCap(LineCapArrowAnchor);
g.SetSmoothingMode(SmoothingModeAntiAlias);
g.DrawLine(&pen,x1,y1,x2,y2);
HDC hdc = g.GetHDC();
HDC memDC = CreateCompatibleDC(hdc);
Color r;
HBITMAP hBitmap;
bmp.GetHBITMAP(r,&hBitmap);
SelectObject(memDC, hBitmap);
bmpInfo.dwFlags = VMR9AlphaBitmap_hDC | VMR9AlphaBitmap_SrcColorKey |
VMR9AlphaBitmap_FilterMode;
bmpInfo.hdc = memDC;
RECT rc;
SetRect(&rc, 0, 0, bmp.GetWidth(),bmp.GetHeight());
bmpInfo.rSrc = rc;
bmpInfo.rDest.left = 0.0f;
bmpInfo.rDest.top = 0.0f;
bmpInfo.rDest.right = 1.0f;
bmpInfo.rDest.bottom = 1.0f;
bmpInfo.fAlpha = 0.5f;
bmpInfo.clrSrcKey = RGB(0,0,0);
bmpInfo.dwFilterMode=MixerPref9_PointFiltering;
pBmp->SetAlphaBitmap(&bmpInfo);
DeleteObject(hBitmap);
DeleteDC(memDC);
g.ReleaseHDC(hdc);
g.~Graphics();
pen.~Pen();
This code is working fine, the line was rendered successfully but am getting the line as smooth less. Even though i set the smoothing mode as anti-aliased i am getting the line as aliased not as smooth as i expected. Is there anyway to render the drawings into the renderer without these issues or tell me whether any changes i have to make to this code to avoid the alias problem.
Thanking you,
J.Surjith Kumar