主要使用imgui创建一个透明窗口显示菜单,透明菜单绘制主要使用以下方法
//在扩展样式中加入WS_EX_LAYERED
HWND hwnd = CreateWindowEx(WS_EX_TOPMOST | WS_EX_LAYERED | WS_EX_TOOLWINDOW,
ImGuiWClass.lpszClassName,
_T("Draw ImGui"),
WS_POPUP,
CW_USEDEFAULT,
CW_USEDEFAULT,
IMGUI_WIDTH,
IMGUI_HIGH,
NULL,
NULL,
GetModuleHandle(NULL),
NULL);
//设置颜色过滤,使用改关键色刷新屏幕后颜色被过滤实现透明
SetLayeredWindowAttributes(hwnd, RGB(255, 255, 255),NULL,LWA_COLORKEY);
//设置dx11屏幕刷新颜色 注意这里的颜色要和设置透明关键色设置一样
ImVec4 clear_color = ImGui::ColorConvertU32ToFloat4(IM_COL32(255, 255, 255));
效果图:
感觉效果还可以 ,但是遇到自己绘制字体或者线条的时候就出现问题了
绘制文字和斜线