老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

使用wxWidgets怎么實(shí)現(xiàn)圖片和文件按鈕

使用wxWidgets怎么實(shí)現(xiàn)圖片和文件按鈕?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)是專業(yè)的隆子網(wǎng)站建設(shè)公司,隆子接單;提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行隆子網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

wxBitmapButtonEx.h

#ifndef _BITMAP_BUTTON_EX_H
#define _BITMAP_BUTTON_EX_H
 
#include "wx/wx.h"
 
enum eBitmapButtonStatus
{
 BitmapButtonNormal,
 BitmapButtonEnter,
 BitmapButtonDown,
 BitmapButtonUp,
 BitmapButtonLeave,
 BitmapButtonDClick,
 BitmapButtonDisable
};
 
class wxBitmapButtonEx : public wxControl
{
 DECLARE_DYNAMIC_CLASS(wxBitmapButtonEx)
 DECLARE_EVENT_TABLE()
public:
 wxBitmapButtonEx();
 virtual ~wxBitmapButtonEx();
 
 wxBitmapButtonEx(wxWindow* parent, wxWindowID id,
   const wxPoint& pos = wxDefaultPosition,
   const wxSize& size = wxDefaultSize,
   long style = wxBORDER_NONE,
   const wxValidator& validator = wxDefaultValidator);
 bool Create(wxWindow* parent, wxWindowID id,
   const wxPoint& pos = wxDefaultPosition,
   const wxSize& size = wxDefaultSize,
   long style = wxSUNKEN_BORDER,
   const wxValidator& validator = wxDefaultValidator);
 
 wxSize DoGetBestSize() const;
 void OnPaint(wxPaintEvent& event);
 virtual void OnEnter(wxMouseEvent& event);
 virtual void OnLeave(wxMouseEvent& event);
 virtual void OnDown(wxMouseEvent& event);
 virtual void OnDClick(wxMouseEvent& event);
 virtual void OnUp(wxMouseEvent& event);
 virtual bool Enable(bool enable = true);
 virtual bool Disable();
 
 //設(shè)置正常圖片
 wxBitmapButtonEx* set_normal_bitmap(wxBitmap* bitmap);
 
 //設(shè)置按鈕按下時(shí)的切換圖片
 wxBitmapButtonEx* set_down_bitmap(wxBitmap* bitmap);
 
 //設(shè)置按鈕按經(jīng)過(guò)時(shí)的切換圖片
 wxBitmapButtonEx* set_enter_bitmap(wxBitmap* bitmap);
 
 //設(shè)置Disable圖片.
 wxBitmapButtonEx* set_disable_bitmap(wxBitmap* bitmap);
 
 //設(shè)置背景圖片
 wxBitmapButtonEx* set_background(const wxBitmap& bitmap);
 
 //設(shè)置背景顏色
 bool set_background_colour(const wxColour& colour);
 
 //設(shè)置按鈕文字
 void set_button_text(wxString str);
 
 //設(shè)置文字字體
 void set_text_font(wxFont font);
 
protected:
 void DrawExistBitmap(wxDC* dc,wxBitmap* image1,wxBitmap* exist_image);
 
private:
 wxBitmap background_bitmap;
 bool is_used_bg;
 
 wxBitmap* normal_bitmap;
 wxBitmap* down_bitmap;
 wxBitmap* enter_bitmap;
 wxBitmap* disable_bitmap;
 
 int button_status;
 wxString text;
 wxFont text_font;
 
 void DrawBackground(wxDC* dc);
 
};
#endif /* _BITMAP_BUTTON_EX_H */

wxBitmapButtonEx.cpp

#include "wxBitmapButtonEx.h"
#include 
 
BEGIN_EVENT_TABLE(wxBitmapButtonEx, wxControl)
EVT_PAINT(wxBitmapButtonEx::OnPaint)
EVT_ENTER_WINDOW(wxBitmapButtonEx::OnEnter)
EVT_LEAVE_WINDOW(wxBitmapButtonEx::OnLeave)
EVT_LEFT_DOWN(wxBitmapButtonEx::OnDown)
EVT_LEFT_DCLICK(wxBitmapButtonEx::OnDClick)
EVT_LEFT_UP(wxBitmapButtonEx::OnUp)
END_EVENT_TABLE()
 
IMPLEMENT_DYNAMIC_CLASS(wxBitmapButtonEx, wxControl)
 
wxBitmapButtonEx::wxBitmapButtonEx()
{
}
 
wxBitmapButtonEx::wxBitmapButtonEx(wxWindow* parent, wxWindowID id,
  const wxPoint& pos,
  const wxSize& size,
  long style,
  const wxValidator& validator)
: normal_bitmap(NULL), down_bitmap(NULL), enter_bitmap(NULL)
{
 Create(parent, id, pos, size, style, validator);
}
 
wxBitmapButtonEx::~wxBitmapButtonEx()
{
 wxDELETE(normal_bitmap);
 wxDELETE(enter_bitmap);
 wxDELETE(down_bitmap);
}
 
bool wxBitmapButtonEx::Create(wxWindow* parent, wxWindowID id,
  const wxPoint& pos,
  const wxSize& size,
  long style,
  const wxValidator& validator)
{
 normal_bitmap = NULL;
 down_bitmap = NULL;
 enter_bitmap = NULL;
 disable_bitmap = NULL;
 button_status = BitmapButtonNormal;
 
 if (!wxControl::Create(parent, id, pos, size, style, validator))
 {
  return false;
 }
 SetBackgroundStyle(wxBG_STYLE_SYSTEM);
 is_used_bg = false;
 text_font.Create(12,wxSWISS,wxFONTSTYLE_NORMAL,wxNORMAL,false,_T("System"),wxFONTENCODING_DEFAULT);
 
 return true;
}
 
wxSize wxBitmapButtonEx::DoGetBestSize() const
{
 return GetSize();
}
 
void wxBitmapButtonEx::DrawExistBitmap(wxDC* dc, wxBitmap* image1,
  wxBitmap* exist_image)
{
 int width = DoGetBestSize().GetWidth();
 int height = DoGetBestSize().GetHeight();
 //wxClientDC dc(this);
 dc->SetPen(*wxBLACK_PEN);
 wxColour clr(2,18,245);
 dc->SetTextForeground(*wxWHITE);
 //dc->SetBrush(*wxTRANSPARENT_BRUSH);
 //dc->SetBrush(*wxBLUE_BRUSH);
 //wxSystemSettings::GetColour(wxSYS_COLOUR_ACTIVECAPTION)
 wxBrush brush(clr);// 
 dc->SetBrush(brush);
 
 dc->DrawRectangle(0, 0, width, height);
 /*wxRect rc = wxRect(0, 0, width, height);
 dc->DrawRoundedRectangle(rc,5);*/
 
 int x = normal_bitmap->GetWidth();
 int y = (height-normal_bitmap->GetHeight())/2.0;
 
 if (image1)
 {
 dc->DrawBitmap(*image1, width-x-5, y, true);
  //dc->DrawBitmap(*image1, 0, 0, true);
 
 } else
 {
 dc->DrawBitmap(*exist_image, width-x-5, y, true);
  //dc->DrawBitmap(*exist_image, 0, 0, true);
 }
 
 if (text.IsEmpty())
 {
 return;
 }
 
 if (!text_font.IsNull())
 {
 dc->SetFont(text_font);
 }
 int pointsize = text_font.GetPointSize();
 
 //dc.SetLayoutDirection(wxLayout_Default);
 
 int bit = text.Find('\n');
 if (bit!=-1)
 {
 wxString str;
 str = text.Left(bit);
 dc->DrawText(str,5,height/2-pointsize-2);
 
 int length = text.Length();
 str = text.Mid(bit+1,length-bit-1);
 dc->DrawText(str,5,height/2);
 }
 else
 {
 dc->DrawText(text,5,height/2-7);
 }
}
 
void wxBitmapButtonEx::OnPaint(wxPaintEvent& event)
{
 wxPaintDC dc(this);
 DrawBackground(&dc);
 
 //1.狀態(tài)控制繪畫,好處就是可以調(diào)用Refresh連背景一起刷新.
 switch (button_status)
 {
  case BitmapButtonNormal:
 case BitmapButtonUp:
 case BitmapButtonLeave:
 {
 int width = DoGetBestSize().GetWidth();
 int height = DoGetBestSize().GetHeight();
 wxClientDC dc(this);
 dc.SetPen(*wxGREY_PEN);
 dc.SetBrush(*wxTRANSPARENT_BRUSH);
 
 dc.DrawRectangle(0, 0, width, height);
 /*wxRect rc = wxRect(0, 0, width, height);
 dc.DrawRoundedRectangle(rc,5);*/
 
 wxPoint pt[3];
 pt[0].x = 1;
 pt[0].y = height-1;
 pt[1].x = pt[1].y = 1;
 pt[2].x = width-1;
 pt[2].y = 1;
 dc.SetPen(*wxWHITE_PEN);
 dc.DrawLines(3,pt);
 
 pt[1].x = width-1;
 pt[1].y = height-1;
 dc.SetPen(*wxBLACK_PEN);
 dc.DrawLines(3,pt);
 
 int x = normal_bitmap->GetWidth();
 int y = (height-normal_bitmap->GetHeight())/2.0;
 dc.DrawBitmap(*normal_bitmap, width-x-5, y, true);
 
 if (!text_font.IsNull())
 {
  dc.SetFont(text_font);  
 }
 int pointsize = text_font.GetPointSize();
 //dc.SetLayoutDirection(wxLayout_Default);
 
 int bit = text.Find('\n');
 if (bit!=-1)
 {
  wxString str;
  str = text.Left(bit);
  dc.DrawText(str,5,height/2-pointsize-2);
 
  int length = text.Length();
  str = text.Mid(bit+1,length-bit-1);
  dc.DrawText(str,5,height/2);
 }
 else
 {
  dc.DrawText(text,5,height/2-7);
 }
 }
 //dc.DrawBitmap(*normal_bitmap, 0, 0, true);
   break;
  case BitmapButtonEnter:
 //  if (!enter_bitmap_)
 //  {
 //   int width = DoGetBestSize().GetWidth();
 //   int height = DoGetBestSize().GetHeight();
 //   wxClientDC dc(this);
 //   dc.SetPen(*wxRED_PEN);
 //   dc.SetBrush(*wxTRANSPARENT_BRUSH);
 
 //   //dc.DrawRectangle(0, 0, width, height);
 //wxRect rc = wxRect(0, 0, width, height);
 //dc.DrawRoundedRectangle(rc,5);
 //
 //   break;
 //  }
 //  dc.DrawBitmap(*enter_bitmap_, 0, 0, true);
   break;
  case BitmapButtonDown:
   DrawExistBitmap(&dc,down_bitmap,normal_bitmap);
   break;
  case BitmapButtonDClick:
   //DrawExistBitmap(&dc,down_bitmap,normal_bitmap);
   break;
  case BitmapButtonDisable:
   //DrawExistBitmap(&dc,disable_bitmap,normal_bitmap);
   break;
  default:
 {
 int width = DoGetBestSize().GetWidth();
 int height = DoGetBestSize().GetHeight();
 wxClientDC dc(this);
 dc.SetPen(*wxGREY_PEN);
 dc.SetBrush(*wxTRANSPARENT_BRUSH);
 
 dc.DrawRectangle(0, 0, width, height);
 /*wxRect rc = wxRect(0, 0, width, height);
 dc.DrawRoundedRectangle(rc,5);*/
 
 wxPoint pt[3];
 pt[0].x = 1;
 pt[0].y = height-1;
 pt[1].x = pt[1].y = 1;
 pt[2].x = width-1;
 pt[2].y = 1;
 dc.SetPen(*wxWHITE_PEN);
 dc.DrawLines(3,pt);
 
 pt[1].x = width-1;
 pt[1].y = height-1;
 dc.SetPen(*wxBLACK_PEN);
 dc.DrawLines(3,pt);
 
 int x = normal_bitmap->GetWidth();
 int y = (height-normal_bitmap->GetHeight())/2.0;
 dc.DrawBitmap(*normal_bitmap, width-x-5, y, true);
 
 if (text.IsEmpty())
 {
  break;
 }
 
 if (!text_font.IsNull())
 {
  dc.SetFont(text_font);
 }
 int pointsize = text_font.GetPointSize();
 //dc.SetLayoutDirection(wxLayout_Default);
 
 int bit = text.Find('\n');
 if (bit!=-1)
 {
  wxString str;
  str = text.Left(bit);
  dc.DrawText(str,5,height/2-pointsize-2);
 
  int length = text.Length();
  str = text.Mid(bit+1,length-bit-1);
  dc.DrawText(str,5,height/2);
 }
 else
 {
  dc.DrawText(text,5,height/2-7);
 }
 } 
   break;
 }
 
}
 
void wxBitmapButtonEx::DrawBackground(wxDC* dc)
{
 if (is_used_bg)
 {
  dc->DrawBitmap(background_bitmap, 0, 0, true);
 } else
 {
  wxBrush brush(GetBackgroundColour());
  wxPen pen(GetBackgroundColour());
  dc->SetBrush(brush);
  dc->SetPen(pen);
  dc->DrawRectangle(0, 0, GetSize().x, GetSize().y);
 }
}
 
void wxBitmapButtonEx::OnEnter(wxMouseEvent& event)
{
 /* button_status = BitmapButtonEnter;
 Refresh();
 Update();*/
}
 
void wxBitmapButtonEx::OnLeave(wxMouseEvent& event)
{
 if (!IsEnabled())
 {
  return;
 }
 button_status = BitmapButtonLeave;
 Refresh();
 Update();
}
 
void wxBitmapButtonEx::OnDClick(wxMouseEvent& event)
{
 /* button_status = BitmapButtonDown;
 Refresh(false);
 Update();*/
}
 
void wxBitmapButtonEx::OnDown(wxMouseEvent& event)
{
 button_status = BitmapButtonDown;
 Refresh();
 Update();
}
 
void wxBitmapButtonEx::OnUp(wxMouseEvent& event)
{
 if (BitmapButtonDown != button_status)
 {
  return;
 }
 button_status = BitmapButtonUp;
 Refresh();
 Update();
 wxCommandEvent myEvent(wxEVT_COMMAND_BUTTON_CLICKED, GetId());
 myEvent.SetEventObject(this);
 GetEventHandler()->ProcessEvent(myEvent);
}
 
wxBitmapButtonEx* wxBitmapButtonEx::set_normal_bitmap(wxBitmap* bitmap)
{
 normal_bitmap = bitmap;
 return this;
}
 
wxBitmapButtonEx* wxBitmapButtonEx::set_down_bitmap(wxBitmap* bitmap)
{
 down_bitmap = bitmap;
 return this;
}
 
wxBitmapButtonEx* wxBitmapButtonEx::set_enter_bitmap(wxBitmap* bitmap)
{
 enter_bitmap = bitmap;
 return this;
}
 
bool wxBitmapButtonEx::Enable(bool enable)
{
 if (enable)
 {
  button_status = BitmapButtonNormal;
 } else
 {
  button_status = BitmapButtonDisable;
 }
 
 Refresh(false);
 Update();
 return wxControl::Enable(enable);
}
 
bool wxBitmapButtonEx::Disable()
{
 return Enable(false);
}
 
wxBitmapButtonEx* wxBitmapButtonEx::set_disable_bitmap(wxBitmap* bitmap)
{
 disable_bitmap = bitmap;
 return this;
}
 
wxBitmapButtonEx* wxBitmapButtonEx::set_background(const wxBitmap& bitmap)
{
 is_used_bg = true;
 background_bitmap = bitmap;
 return this;
}
 
bool wxBitmapButtonEx::set_background_colour(const wxColour& colour)
{
 is_used_bg = false;
 return wxControl::SetBackgroundColour(colour);
}
//
void wxBitmapButtonEx::set_button_text(wxString str)
{
 text = str;
}
//
void wxBitmapButtonEx::set_text_font(wxFont font)
{
 text_font = font;
}

關(guān)于使用wxWidgets怎么實(shí)現(xiàn)圖片和文件按鈕問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


名稱欄目:使用wxWidgets怎么實(shí)現(xiàn)圖片和文件按鈕
網(wǎng)站地址:http://www.xueling.net.cn/article/pcjpsg.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 国产精品日韩三级 | 精品亚洲国产专区在线观看 | 国产公妇仑乱在线观看 | 九九热1| 欧美三区二区一区 | 92在线| 成人永久免费视频网站 | 国产精品96| 国产精品久一 | 日本一区二区三区久久久久 | 国产精品JK白丝AV网站 | 在线观看亚洲av每日更新 | 午夜福利在线观看老司机 | 国产亚洲色婷婷久久99精品91 | 男女啪啪免费观看网站 | 久久精品一二三区 | 亚洲国产aⅴ精品一区二区 可以直接看的无码AV | 国产伦精品一区二区三区照片91 | 日韩精品亚洲Aⅴ在线影院 暖暖视频免费高清日本 | 成人依依网站亚洲综合久 | 欧美日韩精品一区二区在线视频 | 国产免费看插插插视频 | 成人影院在线观看 | 亚洲一区不卡 | 东京热加勒比无码少妇 | 日韩亚洲精品国产第二页 | 一级特黄色毛片 | 欧美亚洲婷婷 | 久久综合中文 | 国产真实夫妇对白视频 | 欧美精品福利视频 | 91精品国啪老师啪 | 佐山爱中文字幕aⅴ在线 | 免费看国产美女裸体视频 | 美女一区| 在线精品视频免费观看 | 国产一区二区三区久久99 | 91精品一区二区三区四区 | 99久久夜色精品国产亚洲1000部 | 把腿张开老子CAO烂你动态图 | 超碰成人97 |