请教 :在视频播放时,在播放窗口画一个虚线的矩形,以相中特定的区域?? 难点 .虚线矩形不能随播放刷新而消失 请教 :在视频播放时,在播放窗口画一个虚线的矩形,以相中特定的区域,就象豪杰解霸一样,用鼠标在播放窗口上画一个虚矩形框,可将选中的区域放大?? 难点 .虚线矩形不能随播放刷新而消失 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你的播放是基于Overlay的,直接在窗口上画就行了.如果不是Overlay的,则需要在显示每一帧图像后马上将线画上去.所以推荐第一种方案. 有两种可能: 1:自己直接编写播放的话 1,2都可以实现 2:如果是调用别人的sdk的话 我看都不行 我的想法是不是用一个透明的非模式对话框,动态的显示对话框的大小,两种情况都可以满足,不过现在只是想法,准备试一下 使用transform filter实时叠加到视频上吧,不过这样可能看起来就没立体感了 我做过这样的窗口. 我这个是两个像素宽的实线框, 是用来在QQ游戏里进行即时提示:static BOOL CALLBACK BoxProc( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter){ switch(uMsg) { case WM_PAINT: { PAINTSTRUCT paint; HDC hdc = ::BeginPaint(hwndDlg, &paint); RECT rc; GetClientRect(hwndDlg, &rc); HBRUSH bs; bs = CreateSolidBrush(RGB(255,0,0)); FillRect(hdc, &rc, bs); ::EndPaint(hwndDlg, &paint); } return TRUE; } return FALSE;}static void CreateBoxWnd(void){ g_hBoxWndHorz = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_BOX), g_hMainWnd, BoxProc); if(g_hBoxWndHorz != NULL) { SetWindowPos(g_hBoxWndHorz, HWND_TOPMOST, 0, 0, TEST_UNIT_CX * 2+5, TEST_UNIT_CY+5, SWP_NOMOVE); HRGN rgn = CreateRectRgn(0,0,0,0); HRGN rgn1 = CreateRectRgn(0,0, TEST_UNIT_CX * 2+5, TEST_UNIT_CY+5); HRGN rgn2 = CreateRectRgn(2,2, TEST_UNIT_CX * 2+3, TEST_UNIT_CY+3); CombineRgn(rgn, rgn1, rgn2, RGN_DIFF); SetWindowRgn(g_hBoxWndHorz, rgn, TRUE); DeleteObject((HGDIOBJ)rgn); DeleteObject((HGDIOBJ)rgn1); DeleteObject((HGDIOBJ)rgn2); } g_hBoxWndVert = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_BOX), g_hMainWnd, BoxProc); if(g_hBoxWndVert != NULL) { SetWindowPos(g_hBoxWndVert, HWND_TOPMOST, 0, 0, TEST_UNIT_CX+5, TEST_UNIT_CY * 2+5, SWP_NOMOVE); HRGN rgn = CreateRectRgn(0,0,0,0); HRGN rgn1 = CreateRectRgn(0,0, TEST_UNIT_CX+5, TEST_UNIT_CY * 2+5); HRGN rgn2 = CreateRectRgn(2,2, TEST_UNIT_CX+3, TEST_UNIT_CY * 2+3); CombineRgn(rgn, rgn1, rgn2, RGN_DIFF); SetWindowRgn(g_hBoxWndVert, rgn, TRUE); DeleteObject((HGDIOBJ)rgn); DeleteObject((HGDIOBJ)rgn1); DeleteObject((HGDIOBJ)rgn2); }} 谢谢 krh2001(边城浪子) 我试一试 遍历“受保护的操作系统文件”? Moxa卡通讯难题 使用Xtreme Toolkit时的又一个问题,撒分了。 CE下面ftp只能下载一次的问题 一个游戏开发的群 哭求vc++技术内幕中文版。 如何可以把OFFICE文件转换成为EMF文件 得到一个EDIT的句柄后,如何取得它的内容? 请问如何让scroolbar着上颜色,先回答上来者加30分 怎样在一台pc上(没有安装vc)注册mfc中控件? 怎样做到桌面刷新时上面画的线还在? 如何实现在背景图片上画 动画???
如果不是Overlay的,则需要在显示每一帧图像后马上将线画上去.所以推荐第一种方案.
1:自己直接编写播放的话 1,2都可以实现
2:如果是调用别人的sdk的话 我看都不行
我的想法是不是用一个透明的非模式对话框,动态的显示对话框的大小,两种情况都可以满足,
不过现在只是想法,准备试一下
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_PAINT:
{
PAINTSTRUCT paint;
HDC hdc = ::BeginPaint(hwndDlg, &paint);
RECT rc;
GetClientRect(hwndDlg, &rc);
HBRUSH bs;
bs = CreateSolidBrush(RGB(255,0,0));
FillRect(hdc, &rc, bs);
::EndPaint(hwndDlg, &paint);
}
return TRUE;
}
return FALSE;
}static void CreateBoxWnd(void)
{
g_hBoxWndHorz = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_BOX), g_hMainWnd, BoxProc);
if(g_hBoxWndHorz != NULL)
{
SetWindowPos(g_hBoxWndHorz, HWND_TOPMOST, 0, 0, TEST_UNIT_CX * 2+5, TEST_UNIT_CY+5, SWP_NOMOVE);
HRGN rgn = CreateRectRgn(0,0,0,0);
HRGN rgn1 = CreateRectRgn(0,0, TEST_UNIT_CX * 2+5, TEST_UNIT_CY+5);
HRGN rgn2 = CreateRectRgn(2,2, TEST_UNIT_CX * 2+3, TEST_UNIT_CY+3);
CombineRgn(rgn, rgn1, rgn2, RGN_DIFF);
SetWindowRgn(g_hBoxWndHorz, rgn, TRUE);
DeleteObject((HGDIOBJ)rgn);
DeleteObject((HGDIOBJ)rgn1);
DeleteObject((HGDIOBJ)rgn2);
} g_hBoxWndVert = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_BOX), g_hMainWnd, BoxProc);
if(g_hBoxWndVert != NULL)
{
SetWindowPos(g_hBoxWndVert, HWND_TOPMOST, 0, 0, TEST_UNIT_CX+5, TEST_UNIT_CY * 2+5, SWP_NOMOVE);
HRGN rgn = CreateRectRgn(0,0,0,0);
HRGN rgn1 = CreateRectRgn(0,0, TEST_UNIT_CX+5, TEST_UNIT_CY * 2+5);
HRGN rgn2 = CreateRectRgn(2,2, TEST_UNIT_CX+3, TEST_UNIT_CY * 2+3);
CombineRgn(rgn, rgn1, rgn2, RGN_DIFF);
SetWindowRgn(g_hBoxWndVert, rgn, TRUE);
DeleteObject((HGDIOBJ)rgn);
DeleteObject((HGDIOBJ)rgn1);
DeleteObject((HGDIOBJ)rgn2);
}
}
我试一试