CStatic控件背景透明问题

jingmei02 2012-05-18 10:31:09
在Dialog(Dialog有背景图片)上创建一个透明的CStatic控件,控件可移动。如何实现?
...全文
402 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
erqieshi 2012-05-23
  • 打赏
  • 举报
回复
erqieshi 2012-05-23
  • 打赏
  • 举报
回复
可以有一种方法曲线救国 把下面Dlg的背景图片 在CStatic上同样的绘制(注意坐标切换)
这样效果就是透明的了

甚至你可以把下面Dlg上的背景图片作点高斯模糊之类的处理 然后在CStatic上绘制 你这样看起来还会有磨砂透明的效果

不过这种的都是假透明 下面有控件或者动态变化的时候就不好办了
jingmei02 2012-05-23
  • 打赏
  • 举报
回复
谢谢,拖动我已经实现了,不过不知道在拖动过程中怎么让控件透明。
向立天 2012-05-22
  • 打赏
  • 举报
回复
关于拖动你可以参考这篇文章
http://blog.csdn.net/xianglitian/article/details/6023656
jingmei02 2012-05-22
  • 打赏
  • 举报
回复
help !!!
jingmei02 2012-05-21
  • 打赏
  • 举报
回复
问题仍然没有解决……
gibsonboy 2012-05-19
  • 打赏
  • 举报
回复
找一下CImageList拖动图片相关的资料。
jingmei02 2012-05-19
  • 打赏
  • 举报
回复
我已实现了创建一个透明的CStatic控件,并且可以用鼠标拖动,但是拖动过程中却不是透明的,即拖动时CStatic控件不会刷新,不能透过控件看见底下dialog的背景图片。现在需要实现的是在拖动CStatic控件的过程中一直可以看见底下dialog的背景图片。
jingmei02 2012-05-18
  • 打赏
  • 举报
回复
OnMouseMove如何处理呢?不能用InvalidateRect,因为用它时会闪烁。
Ginie 2012-05-18
  • 打赏
  • 举报
回复
继承CStatic,重写OnPaint方法和OnMouseMove方法

CPaintDC dc(this); // 控件的设备文件

// 取得位置
CRect client_rect;
GetClientRect(client_rect);

// 取得文本
CString szText;
GetWindowText(szText);

// 取得字体,并选入设备文件
CFont *pFont, *pOldFont;
pFont = GetFont();
pOldFont = dc.SelectObject(pFont);

// 用透明背景填充设备文件
dc.SetBkMode(TRANSPARENT);

// 显示文字
dc.DrawText(szText, client_rect, 0);

// 清除字体
dc.SelectObject(pOldFont);


Eleven 2012-05-18
  • 打赏
  • 举报
回复
你所说的移动CStatic控件,指的是用鼠标拖动控件移动吗?
Eleven 2012-05-18
  • 打赏
  • 举报
回复
WM_CTLCOLOR
SetBkMode(TRANSPARENTS) ??
gibsonboy 2012-05-18
  • 打赏
  • 举报
回复
透明只要在资源管理器设置CStatic控件透明风格就行
控件可以移动看下这篇文章
http://blog.csdn.net/shiyunqiang/article/details/6638285

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧