wxwidgets的wxdialog如何编程实现背景图片

wxf54318 2011-04-03 09:19:29
我在wxdialog上放置了一个wxstaticbitmap又在这个控件上放置了两个按钮,结果按钮就不能响应单击事件了,我只得实现背景图片了,请问如何编程实现背景图片
...全文
585 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
masterz 2011-04-04
  • 打赏
  • 举报
回复
没有做过这种button,看看别人的transparent static control对你有参考价值没有
http://www.romwnet.org/dasblogce/PermaLink,guid,2dd767f8-1952-45b6-b1d8-aaac89702e2e.aspx
wxWidgets: Transparent Static Text Controls
giant7 2011-04-04
  • 打赏
  • 举报
回复
同一楼
wxf54318 2011-04-04
  • 打赏
  • 举报
回复
masterz我用你的方法设置背景图片成功,但是我的按钮在显示上把背景挡住了,我想把按钮设置成透明的,我设置
wxNO_BORDER和wxTRANSPARENT_WINDOW不管用啊
masterz 2011-04-03
  • 打赏
  • 举报
回复
EVT_ERASE_BACKGROUND 里面画背景图
http://www.linuxphp.org/?action-viewthread-tid-887
BEGIN_EVENT_TABLE(ganjiFrame,wxFrame)
//(*EventTable(ganjiFrame)
//*)
EVT_PAINT(ganjiFrame::OnPaint)
EVT_ERASE_BACKGROUND(ganjiFrame::OnEraseBackground)
END_EVENT_TABLE()


void ganjiFrame::OnPaint( wxPaintEvent &WXUNUSED(event) )
{
wxPaintDC dc( this );
PrepareDC( dc );
}

void ganjiFrame::OnEraseBackground(wxEraseEvent& event)
{

wxImage image;
wxBitmap m_background;
if (image.LoadFile(_T("backgrnd.png"), wxBITMAP_TYPE_PNG))
{
m_background = wxBitmap(image);
}
if (m_background.Ok())
{
wxSize sz = GetClientSize();
wxRect rect(0, 0, sz.x, sz.y);

if (event.GetDC())
{
TileBitmap(rect, *(event.GetDC()), m_background);

}
else
{
wxClientDC dc(this);
TileBitmap(rect, dc, m_background);
}
}
else
event.Skip(); // The official way of doing it
}
bool ganjiFrame::TileBitmap(const wxRect& rect, wxDC& dc, wxBitmap& bitmap)
{
int w = bitmap.GetWidth();
int h = bitmap.GetHeight();

int i, j;
for (i = rect.x; i < rect.x + rect.width; i += w)
{
for (j = rect.y; j < rect.y + rect.height; j+= h)
dc.DrawBitmap(bitmap, i, j);
}
return true;
}

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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