当前位置: 首页 > wzjs >正文

做有搜索功能的网站sem竞价推广是什么意思

做有搜索功能的网站,sem竞价推广是什么意思,如何创建属于个人网站,北京电力建设公司培训学校网站文章目录 增加边框BoundingBox添加addBoundingBox添加BoundingBox控制按钮点击按钮之后的槽函数 添加坐标轴增加点线面显隐控制按钮添加控制点线面显隐的按钮到三维显示界面控制面显示槽函数控制线显示槽函数控制点显示槽函数 增加边框BoundingBox 增加边框BoundingBox并通过按…

文章目录

  • 增加边框BoundingBox
    • 添加addBoundingBox
    • 添加BoundingBox控制按钮
    • 点击按钮之后的槽函数
  • 添加坐标轴
  • 增加点线面显隐控制按钮
    • 添加控制点线面显隐的按钮到三维显示界面
    • 控制面显示槽函数
    • 控制线显示槽函数
    • 控制点显示槽函数

增加边框BoundingBox

增加边框BoundingBox并通过按钮控制显隐
需要的全局变量

    // 显示场景QVTKOpenGLWidget *m_pScene;vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow_;vtkSmartPointer<vtkRenderer> renderer_;// 边框显示vtkSmartPointer<vtkActor> boundingBoxActor_; // 用于存储BoundingBox的Actorbool isBoundingBoxVisible_;                  // 控制BoundingBox的显隐状态vtkSmartPointer<vtkTextActor> boundingBoxButtonActor_; 

添加addBoundingBox

void ThreeDimensionalDisplayPage::addBoundingBox(vtkSmartPointer<vtkPolyData> polyData)
{if (boundingBoxActor_){renderer_->RemoveActor(boundingBoxActor_);boundingBoxActor_ = nullptr;}vtkNew<vtkOutlineFilter> outlineFilter;outlineFilter->SetInputData(polyData);outlineFilter->Update();vtkNew<vtkPolyDataMapper> outlineMapper;outlineMapper->SetInputConnection(outlineFilter->GetOutputPort());boundingBoxActor_ = vtkSmartPointer<vtkActor>::New();boundingBoxActor_->SetMapper(outlineMapper);boundingBoxActor_->GetProperty()->SetColor(1.0, 0.0, 0.0);boundingBoxActor_->GetProperty()->SetLineWidth(2.0);boundingBoxActor_->SetVisibility(isBoundingBoxVisible_); // 根据状态决定是否显示renderer_->AddActor(boundingBoxActor_);
}

添加BoundingBox控制按钮

void ThreeDimensionalDisplayPage::addBoundingBoxControlButton()
{// 避免重复添加if (boundingBoxButtonActor_ && renderer_->HasViewProp(boundingBoxButtonActor_))return;vtkNew<vtkTextActor> textActor;textActor->SetInput("Hide Bounding Box");vtkTextProperty *textProp = textActor->GetTextProperty();textProp->SetFontSize(24);textProp->SetColor(0.0, 0.0, 0.0);           // 黑色文字textProp->SetBackgroundColor(0.8, 0.8, 0.8); // 灰色背景textProp->SetBackgroundOpacity(1.0);textProp->SetFrame(1);textProp->SetFrameColor(0.0, 0.0, 0.0);textActor->SetDisplayPosition(10, 10);renderer_->AddActor2D(textActor);boundingBoxButtonActor_ = textActor;// 注册鼠标点击事件(只注册一次)static bool observerAdded = false;if (!observerAdded){vtkNew<vtkCallbackCommand> clickCallback;clickCallback->SetClientData(this);clickCallback->SetCallback([](vtkObject *caller, unsigned long, void *clientData, void *){auto *self = static_cast<ThreeDimensionalDisplayPage *>(clientData);int *clickPos = static_cast<vtkRenderWindowInteractor *>(caller)->GetEventPosition();int x = clickPos[0];int y = clickPos[1];// 判断是否点击在按钮上(近似判断)int *pos = self->boundingBoxButtonActor_->GetPositionCoordinate()->GetComputedDisplayValue(self->renderer_);int btnX = pos[0];int btnY = pos[1];int width = 220, height = 40;if (x >= btnX && x <= btnX + width &&y >= btnY && y <= btnY + height){self->OnBoundingBoxButtonClicked();} });interactor_->AddObserver(vtkCommand::LeftButtonPressEvent, clickCallback);observerAdded = true;}isBoundingBoxVisible_ = true;
}

点击按钮之后的槽函数


void ThreeDimensionalDisplayPage::OnBoundingBoxButtonClicked()
{if (!boundingBoxActor_)return;isBoundingBoxVisible_ = !isBoundingBoxVisible_;boundingBoxActor_->SetVisibility(isBoundingBoxVisible_);if (boundingBoxButtonActor_){boundingBoxButtonActor_->SetInput(isBoundingBoxVisible_ ? "Hide Bounding Box" : "Show Bounding Box");}renderWindow_->Render();
}

添加坐标轴

需要的全局变量,防止重复创建

    // 坐标轴显示vtkSmartPointer<vtkAxesActor> axes_;vtkSmartPointer<vtkOrientationMarkerWidget> marker_;

创建坐标轴

void ThreeDimensionalDisplayPage::addCoordinateAxes()
{if (!axes_)axes_ = vtkSmartPointer<vtkAxesActor>::New();axes_->SetTotalLength(10.0, 10.0, 10.0);if (!marker_)marker_ = vtkSmartPointer<vtkOrientationMarkerWidget>::New();marker_->SetOrientationMarker(axes_);marker_->SetOutlineColor(0.9300, 0.5700, 0.1300);marker_->SetInteractor(m_pScene->GetInteractor());marker_->SetDefaultRenderer(renderer_);marker_->SetViewport(0.8, 0.0, 1.0, 0.2);marker_->SetEnabled(1);marker_->InteractiveOn();
}

增加点线面显隐控制按钮

需要的全局变量,防止重复创建

    // 添加控制点线面显隐的按钮到三维显示界面void addObjVisibilityControlButtons();// 控制面显示槽函数void toggleSurfaceVisibility();// 控制线显示槽函数void toggleWireframeVisibility();// 控制点显示槽函数void togglePointsVisibility();// 控制obj点线面的显隐vtkSmartPointer<vtkActor> surfaceActor_;vtkSmartPointer<vtkActor> wireframeActor_;vtkSmartPointer<vtkActor> pointsActor_;// 控制obj点线面显隐的按钮vtkSmartPointer<vtkTextActor> surfaceToggleButton_;vtkSmartPointer<vtkTextActor> wireframeToggleButton_;vtkSmartPointer<vtkTextActor> pointsToggleButton_;

添加控制点线面显隐的按钮到三维显示界面

void ThreeDimensionalDisplayPage::addObjVisibilityControlButtons()
{// 如果已经创建过按钮,则直接重新添加到 renderer_if (surfaceToggleButton_){surfaceToggleButton_->SetInput("Hide Surface");wireframeToggleButton_->SetInput("Hide Wireframe");pointsToggleButton_->SetInput("Hide Points");renderer_->AddActor2D(surfaceToggleButton_);renderer_->AddActor2D(wireframeToggleButton_);renderer_->AddActor2D(pointsToggleButton_);return;}// 按钮文字及初始状态std::vector<std::pair<std::string, vtkSmartPointer<vtkTextActor> *>> buttons = {{"Hide Surface", &surfaceToggleButton_},{"Hide Wireframe", &wireframeToggleButton_},{"Hide Points", &pointsToggleButton_}};int startY = 60; // 初始 Y 位置for (auto &[text, actorPtr] : buttons){auto textActor = vtkSmartPointer<vtkTextActor>::New();textActor->SetInput(text.c_str());auto *textProp = textActor->GetTextProperty();textProp->SetFontSize(20);textProp->SetColor(0.0, 0.0, 0.0);textProp->SetBackgroundColor(0.9, 0.9, 0.9);textProp->SetBackgroundOpacity(1.0);textProp->SetFrame(1);textProp->SetFrameColor(0.0, 0.0, 0.0);textActor->SetDisplayPosition(10, startY);renderer_->AddActor2D(textActor);*actorPtr = textActor;startY += 50; // 下一个按钮向下偏移}// 注册鼠标事件(只注册一次)static bool observerAdded = false;if (!observerAdded){vtkNew<vtkCallbackCommand> clickCallback;clickCallback->SetClientData(this);clickCallback->SetCallback([](vtkObject *caller, unsigned long, void *clientData, void *){auto* self = static_cast<ThreeDimensionalDisplayPage*>(clientData);int* clickPos = static_cast<vtkRenderWindowInteractor*>(caller)->GetEventPosition();int x = clickPos[0];int y = clickPos[1];std::vector<std::pair<vtkSmartPointer<vtkTextActor>, std::function<void()>>> buttons = {{self->surfaceToggleButton_, [&]() { self->toggleSurfaceVisibility(); }},{self->wireframeToggleButton_, [&]() { self->toggleWireframeVisibility(); }},{self->pointsToggleButton_, [&]() { self->togglePointsVisibility(); }}};for (auto& [actor, func] : buttons){int* pos = actor->GetPositionCoordinate()->GetComputedDisplayValue(self->renderer_);int bx = pos[0];int by = pos[1];int width = 200, height = 40;if (x >= bx && x <= bx + width &&y >= by && y <= by + height){func();break;}} });interactor_->AddObserver(vtkCommand::LeftButtonPressEvent, clickCallback);observerAdded = true;}
}

控制面显示槽函数


void ThreeDimensionalDisplayPage::toggleSurfaceVisibility()
{if (surfaceActor_){bool visible = surfaceActor_->GetVisibility();surfaceActor_->SetVisibility(!visible);if (surfaceToggleButton_)surfaceToggleButton_->SetInput(visible ? "Show Surface" : "Hide Surface");renderWindow_->Render();}
}

控制线显示槽函数

void ThreeDimensionalDisplayPage::toggleWireframeVisibility()
{if (wireframeActor_){bool visible = wireframeActor_->GetVisibility();wireframeActor_->SetVisibility(!visible);if (wireframeToggleButton_)wireframeToggleButton_->SetInput(visible ? "Show Wireframe" : "Hide Wireframe");renderWindow_->Render();}
}

控制点显示槽函数


void ThreeDimensionalDisplayPage::togglePointsVisibility()
{if (pointsActor_){bool visible = pointsActor_->GetVisibility();pointsActor_->SetVisibility(!visible);if (pointsToggleButton_)pointsToggleButton_->SetInput(visible ? "Show Points" : "Hide Points");renderWindow_->Render();}
}

也可以使用qpushbutton进行控制,逻辑更加简单,不需要场景里添加按钮了,创建按钮后直接连接toggleSurfaceVisibility即可。

http://www.dtcms.com/wzjs/220014.html

相关文章:

  • 那些做面点的网站好山东免费网络推广工具
  • 网站支付平台是怎么做的搜索引擎网址有哪些
  • 公司官方网站建设费计入什么科目中国疫情今天最新消息
  • 电子商务网站建设的基本要素百度云网盘资源分享网站
  • 咪咪做网站十大电商代运营公司
  • 单页网站推广友情链接价格
  • 广东专业做网站排名公司哪家好网站收录排名
  • 网站模板带手机站网络营销推广的
  • 完善系部网站建设的好处查图百度识图
  • 东莞网络营销外包网站推广优化的公司
  • 起名算命网站如何做赚钱营销图片大全
  • 好医生网站怎么做不了题目了免费刷推广链接的软件
  • 网站建设可以资本化吗好用的视频播放器app
  • 瑞安学校网站建设seo营销网站
  • 做网站免费服务器哪家好如何做推广呢
  • 网页设计模板素材网站大全公司如何做网络推广营销
  • 品牌设计主要做什么搜索引擎优化排名技巧
  • 用模板做企业网站大型的营销型网站
  • iis发布网站 主目录重定向到url百度推广有哪些售后服务
  • 入门 做网站 书籍google chrome官网入口
  • 为什么我做的视频网站播放不了百度搜索引擎推广收费标准
  • 腾讯云点播做视频网站seoul national university
  • python3 网站开发实例广东云浮疫情最新情况
  • 愿意合作做游戏的网站平台外贸营销网站建设
  • 网站建设服务营销网络是什么意思
  • 1 设计一个企业网站seo是什么岗位简称
  • 收藏的网站从做系统后找不到了廊坊网站建设优化
  • 冠县网站制作uc信息流广告投放
  • 网站推广软文代发推广一般收多少钱
  • 如何访问云南建设厅网站广告宣传语