本文整理汇总了C++中GraphicLayer::translateScreenToData方法的典型用法代码示例。如果您正苦于以下问题:C++ GraphicLayer::translateScreenToData方法的具体用法?C++ GraphicLayer::translateScreenToData怎么用?C++ GraphicLayer::translateScreenToData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GraphicLayer
的用法示例。
在下文中一共展示了GraphicLayer::translateScreenToData方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateBoundingBox
void TextObjectImp::updateBoundingBox()
{
// Get the width and height of the bounding box in screen pixels based on the scaled text image size
int iWidth = 0;
int iHeight = 0;
string text = getSubstitutedText();
if (text.empty() == false)
{
QString strMessage = QString::fromStdString(text);
QFont scaledFont = getScaledFont();
int iMaxSize = 0;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &iMaxSize);
int iAlignment = getTextAlignment();
QFontMetrics ftMetrics(scaledFont);
QRect boundingBox = ftMetrics.boundingRect(0, 0, iMaxSize, iMaxSize,
iAlignment | Qt::TextWordWrap, strMessage);
iWidth = boundingBox.width();
iHeight = boundingBox.height();
}
// Get the current bounding box
LocationType llCorner = getLlCorner();
LocationType urCorner = getUrCorner();
// Use the lower left corner as the anchor and compute the data coordinate of the upper right corner
GraphicLayer* pLayer = getLayer();
if (pLayer != NULL)
{
// Compute the upper right coordinate
PerspectiveView* pView = dynamic_cast<PerspectiveView*>(pLayer->getView());
if (pView != NULL)
{
double zoomFactor = 100.0 / pView->getZoomPercentage();
double xScale = zoomFactor / pLayer->getXScaleFactor();
double yScale = zoomFactor / pLayer->getYScaleFactor();
urCorner.mX = llCorner.mX + (iWidth * xScale);
urCorner.mY = llCorner.mY + (iHeight * yScale);
}
if (dynamic_cast<OrthographicView*>(pLayer->getView()) != NULL)
{
double dScreenX = 0.0;
double dScreenY = 0.0;
pLayer->translateDataToScreen(llCorner.mX, llCorner.mY, dScreenX, dScreenY);
pLayer->translateScreenToData(dScreenX + iWidth, dScreenY + iHeight, urCorner.mX, urCorner.mY);
}
}
else
{
urCorner.mX = llCorner.mX + iWidth;
urCorner.mY = llCorner.mY + iHeight;
}
// Update the bounding box and selection handles
setBoundingBox(llCorner, urCorner);
updateHandles();
mUpdateBoundingBox = false;
}