|
发表于 2012-4-26 19:07:08
|
显示全部楼层
struct ColorLabel: public osgWidget:abel {
ColorLabel(const char* label): osgWidget::Label(label, "")
{
setlocale(LC_ALL, ".936");
setFont("fonts/simhei.ttf"); //字体您看着修改
setFontSize(14);
setFontColor(1.0f, 1.0f, 1.0f, 1.0f);
setColor(0.3f, 0.3f, 0.3f, 1.0f);
setPadding(2.0f);
setCanFill(true);
addSize(150.0f, 25.0f);
int requiredSize = mbstowcs(NULL, label, 0);
wchar_t* wtext = new wchar_t[requiredSize+1];
mbstowcs(wtext, label, requiredSize+1);
setLabel(wtext);
delete wtext;
setEventMask(osgWidget::EVENT_MOUSE_PUSH | osgWidget::EVENT_MASK_MOUSE_MOVE);
}
bool mousePush(double, double, const osgWidget::WindowManager*) {
osgWidget::Table* p = dynamic_cast<osgWidget::Table*>(_parent);
if(!p) return false;
p->hide();
const std::string& name = getName();
if(!name.compare("XXX")) //XXX为Lable的内容
{
//执行您的代码
}
return true;
}
bool mouseEnter(double, double, const osgWidget::WindowManager*) {
setColor(0.9f, 0.6f, 0.1f, 1.0f);
return true;
}
bool mouseLeave(double, double, const osgWidget::WindowManager*) {
setColor(0.3f, 0.3f, 0.3f, 1.0f);
return true;
}
};
//上面那段代码是在我的程序里面截取出的一部分,您看着借鉴嘛~~~ 总之是可以正常显示中文的~~~~
//估计您需要重载osgWidget::Label 这个类~~~
//本人也是新手,可能上面的地方有错,还望见谅!
|
|